You are on page 1of 27

Schema XML & Web Services

Jeferson Bitencourt Roberto Marini Steck Xavier C Neto

Histrico
DTD - Definio de Tipo de Documento; DTD foi o primeiro padro fortemente utilizado para definio e validao de XMLs; Utilizado para validaes do SGML; Em 2001 se iniciou a mudana para XSD;

DTD Exemplo

<!DOCTYPE NEWSPAPER [

<!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER "Vervet Logic Times"> <!ENTITY PUBLISHER "Vervet Logic Press"> <!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]>

XML Shema
uma linguagem baseada no formato XML para validar documentos XML; Foi recomendada e evoluda pelo W3C; XSD (XML Schema Definition), documento que descreve a estrutura de um documento XML; Todas as linguagens de programao possuem APIs para trabalhar com XSD;

XML Shema
Suportam amplo tipo de dados; Suportam namespaces; Suportam criao de tipos derivados dos tipos bsicos; Suportam criao de estrutura complexas para validao, como ranges de dados e limites; Suportam relacionamentos entre tipos de dados no Schema(reaproveitamento);

XML Schema Tipos ;

Existem cinco conjuntos de tipos de dados pr-definidos em XSD. Esses conjuntos de tipos de dados so:
Numricos - xsd:float, xsd:double, xsd:decimal, xsd:integer, xsd:negativeInteger , entre outros; Data/Hora - xsd:dateTime, xsd:time, xsd:gYear , entre outros String - xsd:string, xsd:normalizedString, xsd:token Binrios - xsd:hexBinary, xsd:base64Binary Booleanos - xsd:boolean

I. II. III. IV. V.

XML Schema Estrutura


A primeira linha sempre a definio padro de um XML; Na segunda, a definio de no mnimo o namespace de tipos bsicos, onde possvel adicionar outras definies de tipos, incluindo a sua;

<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... </xs:schema>

XML Schema Estrutura


Elementos do XML <xsd:element name="endereco" type="xsd:string" minOccurs="0" maxOccurs="1"/>

Atributos dos Elementos <xsd:attribute name="datacadastro" type="xsd:dateTime" use="optional"/>

XML Schema Estrutura

Elementos Complexos, para que esses elementos sejam declarados necessrio utilizar tag complexType; Podemos ter elementos complexos dentro de elementos complexos;

<xsd:element name="cliente"> <xsd:complexType> <xsd:element name="nome" type="xsd:string"/> <xsd:element name="endereco" type="xsd:string"/> <xsd:element name="cep" type="xsd:integer"/> </xsd:complexType> </xsd:element>

XML Schema Estrutura

Posso criar Restries para validao da definio do XML;

<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="car > <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>

XML Schema Estrutura

Grupos sequence, all e choice.

Define a ordem correta e obrigatria dos elementos. <xsd:sequence> <xsd:element name="nome" type="xsd:string"/> <xsd:element name="datanasc" type="xsd:date"/> </xsd:sequence> Obriga apenas que os elementos constem no documento <xsd:all> <xsd:element name="nome" type="xsd:string"/> <xsd:element <xsd:element name="telefone" type="xsd:string"/> </xsd:all>

Obriga que somente um dos elementos especificados conste no documento xml <xsd:choice> <xsd:element name="CPF" type="xsd:string"/> <xsd:element name="RG" type="xsd:string"/> </xsd:choice>

XML Schema - Exemplo


<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minOccurs="0"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>

SOA
SOA uma arquitetura para computao distribuda; SOA no somente WebService; A arquitetura SOA pode possuir vrios componentes de integrao e servios:

- Enterprise Service Bus - WebService - Business Process Mamagement - Legacy Services

Defining a Service More Precisely It is important to be clear about what we mean when we use the word "service" in the SOA context. Typically we are thinking about a business service, such as making a hotel reservation or buying a computer online, but keep in mind that these services do not include a visible element. Services do not have a frontend-they expose either

WebService
uma soluo padronizada utilizada na integrao de sistemas diferentes; Utiliza XMLs para troca de informaes; Permite integrar diferentes plataformas; Pode ser implementada em qualquer linguagem; Permite aplicao de segurana em vrios nveis;

How Does it Work? The basic Web services platform is XML + HTTP. XML provides a language which can be used between different platforms and programming languages and still express complex messages and

SOAP - Simple Object Access Protocol

O padro W3C no determina o protocolo de transporte dos dados para o WebService .... mas mensagens SOAP so documentos XML que aderem a uma especificao fornecida pelo rgo W3C. baseado em XML e possui XSD que o define; Permite Extenses do Protocolo para evolues; SOAP independente do protocolo de comunicao da rede, Http, TCP/IP, MQ, JMS ... SOAP independente do plataforma e lingugem de programao. Existem programas Cobol Mainframe que geram este protocolo

SOAP - Simple Object Access Protocol


SOAP Message; SOAP Envelope, que possui informaes de entrega da mensagem para processamento; SOAP Header, onde temos informaes de como processar a mensagem e apliaao de extenses; SOAP Body, onde so adicionadas os dados(payloads) e as

WSDL - Web Service Description Language


Especificao desenvolvida pela W3C para descrever Web Service em formato XML; Tambm define a localizao(end point) do Servio; Aceita que a definio dos dados das mensagens esteja em seu arquivo; Permite extenses no modelo;

WSDL - Exemplo
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:message name="somaRequest"> <wsdl:part name="valor1" type="xsd:int"/> <wsdl:part name="valor2" type="xsd:int"/> </wsdl:message> <wsdl:message name="somaResponse"> <wsdl:part name="somaReturn" type="xsd:int"/> </wsdl:message> <wsdl:portType name="Servico"> <wsdl:operation name="soma" parameterOrder="valor1 valor2"> <wsdl:input message="impl:somaRequest" name="somaRequest"/> <wsdl:output message="impl:somaResponse" name="somaResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ServicoSoapBinding" type="impl:Servico"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="soma"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="somaRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/> </wsdl:input> <wsdl:output name="somaResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="ServicoService"> <wsdl:port binding="impl:ServicoSoapBinding" name="Servico"> <wsdlsoap:address location="http://localhost:8080/axis/Servico.jws"/> </wsdl:port> </wsdl:service> </wsdl:definitions>

UDDI

Web Service Funcionamento

Referncia do W3C

Exemplos
Nota Fiscal Eletronica DDA Correios

Colcoar um WebService apontando para os correios At mainframe consegue responder ws exemplo IBM

Vantagens e desvantagens

Futuro Rest WebService Benefcos sobre o soap Contras

You might also like