Tutorial de XML

XML INÍCIO Introdução ao XML XML Como usar Árvore XML Sintaxe XML Elementos XML Atributos XML Namespaces XML Exibição XML XML HttpRequest Analisador de XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Validador de XML XML DTD Esquema XML Servidor XML Exemplos XML Teste de XML Certificado XML

XML AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

XML DOM

Introdução ao DOM Nós DOM Acesso ao DOM Informações do nó DOM Lista de nós DOM Travessia do DOM Navegação DOM Valores de obtenção do DOM Nós de alteração do DOM Remoção de nós do DOM Substituir nós DOM DOM Criar nós DOM Adicionar nós Nós clones DOM Exemplos de DOM

Tutorial XPath

Introdução ao XPath Nós XPath Sintaxe XPath Eixos XPath Operadores XPath Exemplos de XPath

Tutorial XSLT

Introdução ao XSLT Idiomas XSL Transformação XSLT XSLT <modelo> XSLT <valor-de> XSLT <para-cada> XSLT <classificar> XSLT <if> XSLT <escolha> Aplicar XSLT XSLT no cliente XSLT no servidor XSLT Editar XML Exemplos de XSLT

Tutorial XQuery

Introdução ao XQuery Exemplo de XQuery XQuery FLWOR XQuery HTML Termos de XQuery Sintaxe XQuery Adicionar XQuery Seleção de XQuery Funções XQuery

XML DTD

Introdução DTD Blocos de construção de DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Exemplos de DTD

Esquema XSD

Introdução ao XSD XSD Como fazer XSD <esquema> Elementos XSD Atributos XSD Restrições XSD

Complexo XSD

Elementos XSD XSD vazio Apenas elementos XSD Somente texto XSD XSD Misto Indicadores XSD XSD <qualquer> XSD <qualquer atributo> Substituição XSD Exemplo de XSD

Dados XSD

Cadeia XSD Data XSD XSD Numérico XSD Misc Referência XSD

Serviços da Web

Serviços XML XML WSDL XML SOAP XML RDF XML RSS

Referências

Tipos de nós DOM Nó DOM Lista de nós DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentário DOM DOM XMLHttpRequest Analisador de DOM Elementos XSLT Funções XSLT/XPath

XML WSDL


  • WSDL significa Web Services Description Language
  • WSDL é usado para descrever serviços da web
  • WSDL é escrito em XML
  • WSDL é uma recomendação do W3C de 26 de junho de 2007

Documentos WSDL

Um documento WSDL descreve um serviço da web. Ele especifica a localização do serviço e os métodos do serviço, usando estes elementos principais:

Element Description
<types> Defines the (XML Schema) data types used by the web service
<message> Defines the data elements for each operation
<portType> Describes the operations that can be performed and the messages involved.
<binding> Defines the protocol and data format for each port type

A estrutura principal de um documento WSDL é assim:

<definitions>

<types>
  data type definitions........
</types>

<message>
  definition of the data being communicated....
</message>

<portType>
  set of operations......
</portType>

<binding>
  protocol and data format specification....
</binding>

</definitions>


Exemplo de WSDL

Esta é uma fração simplificada de um documento WSDL:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

Neste exemplo, o elemento <portType> define "glossaryTerms" como o nome de uma porta e "getTerm" como o nome de uma operação .

A operação "getTerm" tem uma mensagem de entrada chamada "getTermRequest" e uma mensagem de saída chamada "getTermResponse".

Os elementos <message> definem as partes de cada mensagem e os tipos de dados associados.


O elemento <portType>

O elemento <portType> define um serviço da web , as operações que podem ser executadas e as mensagens envolvidas.

O tipo de solicitação-resposta é o tipo de operação mais comum, mas o WSDL define quatro tipos:

Type Definition
One-way The operation can receive a message but will not return a response
Request-response The operation can receive a request and will return a response
Solicit-response The operation can send a request and will wait for a response
Notification The operation can send a message but will not wait for a response

Operação unidirecional WSDL

Um exemplo de operação unidirecional:

<message name="newTermValues">
  <part name="term" type="xs:string"/>
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="setTerm">
    <input name="newTerm" message="newTermValues"/>
  </operation>
</portType >

No exemplo acima, o portType "glossaryTerms" define uma operação unidirecional chamada "setTerm".

A operação "setTerm" permite a entrada de novas mensagens de termos do glossário usando uma mensagem "newTermValues" com os parâmetros de entrada "term" e "value". No entanto, nenhuma saída é definida para a operação.


Operação de solicitação-resposta WSDL

Um exemplo de operação de solicitação-resposta:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

No exemplo acima, o portType "glossaryTerms" define uma operação de solicitação-resposta chamada "getTerm".

A operação "getTerm" requer uma mensagem de entrada chamada "getTermRequest" com um parâmetro chamado "term", e retornará uma mensagem de saída chamada "getTermResponse" com um parâmetro chamado "value".


Ligação WSDL ao SOAP

As ligações WSDL definem o formato da mensagem e os detalhes do protocolo para um serviço da web.

Um exemplo de operação de solicitação-resposta:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

<binding type="glossaryTerms" name="b1">
   <soap:binding style="document"
   transport="http://schemas.xmlsoap.org/soap/http" />
   <operation>
     <soap:operation soapAction="http://example.com/getTerm"/>
     <input><soap:body use="literal"/></input>
     <output><soap:body use="literal"/></output>
  </operation>
</binding>

O elemento de ligação tem dois atributos - nome e tipo.

O atributo name (você pode usar qualquer nome que desejar) define o nome da associação, e o atributo type aponta para a porta da associação, neste caso a porta "glossaryTerms".

O elemento soap:binding tem dois atributos - estilo e transporte.

O atributo style pode ser "rpc" ou "document". Neste caso usamos document. O atributo transport define o protocolo SOAP a ser usado. Neste caso usamos HTTP.

O elemento de operação define cada operação que o portType expõe.

Para cada operação, a ação SOAP correspondente deve ser definida. Você também deve especificar como a entrada e a saída são codificadas. Neste caso usamos "literal".