WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随 机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分,如数据的序列化则归入底部分,因为它包含具体的定义。在上述的文档元 素中,<types>、<message>、<portType>属于抽象定义 层,<binding>、<service>属于具体定义层。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。
WSDL文档的结构实例解析
下面我们将通过一个实际的WSDL文档例子来详细说明各标签的作用及关系。
- <?xmlversion="1.0"encoding="UTF-8"?>
- <definitions
- xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:tns="http://www.jsoso.com/wstest"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns="http://schemas.xmlsoap.org/wsdl/"
- targetNamespace="http://www.jsoso.com/wstest"
- name="Example">
- <types>
- <xsd:schema>
- <xsd:import
- namespace="http://www.jsoso.com/wstest"
- schemaLocation="http://localhost:8080/hello?xsd=1"></xsd:import>
- </xsd:schema>
- </types>
- <messagename="toSayHello">
- <partname="userName"type="xsd:string"></part>
- </message>
- <messagename="toSayHelloResponse">
- <partname="returnWord"type="xsd:string"></part>
- <messagename="sayHello">
- <partname="person"type="tns:person"></part>
- <partname="arg1"type="xsd:string"></part>
- <messagename="sayHelloResponse">
- <partname="personList"type="tns:personArray"></part>
- <messagename="HelloException">
- <partname="fault"element="tns:HelloException"></part>
- <portTypename="Example">
- <operationname="toSayHello"parameterOrder="userName">
- <inputmessage="tns:toSayHello"></input>
- <outputmessage="tns:toSayHelloResponse"></output>
- </operation>
- <operationname="sayHello"parameterOrder="personarg1">
- <inputmessage="tns:sayHello"></input>
- <outputmessage="tns:sayHelloResponse"></output>
- <faultmessage="tns:HelloException"name="HelloException"></fault>
- </portType>
- <bindingname="ExamplePortBinding"type="tns:Example">
- <soap:binding
- transport="http://schemas.xmlsoap.org/soap/http"
- style="rpc"></soap:binding>
- <operationname="toSayHello">
- <soap:operationsoapAction="sayHello"></soap:operation>
- <input>
- <soap:bodyuse="literal"
- namespace="http://www.jsoso.com/wstest"></soap:body>
- </input>
- <output>
- </output>
- <operationname="sayHello">
- <faultname="HelloException">
- <soap:faultname="HelloException"use="literal"></soap:fault>
- </fault>
- </binding>
- <servicename="Example">
- <portname="ExamplePort"binding="tns:ExamplePortBinding">
- <soap:addresslocation="http://localhost:8080/hello"></soap:address>
- </port>
- </service>
- </definitions>
由于上面的事例XML较长,我们将其逐段分解讲解
WSDL文档的根元素:<definitions>
Xml代码