当前位置: 首页 > 图文教程 > XML家族 > XML > XML模式:WSD

XML
快速通过XSL转换XML文件
XML入门精解之结构与语法
利用XSL和ASP在线编辑XML文档
关于XML在语音合成中的应用
如何得到XML文档文件的大小
快速从一个XML文件中查找信息
一个在客户端生成并使用XML的例子
给XML初学者建议
XML的四种解析器原理及性能比较
改变我们生活的这些XML应用
揭穿 XQuery 的神话和误解
使用XSL将XML文档中的CDATA注释输出为HTML文本
基于XML的购物车的实现
javascript调用XML制作连动下拉框
用XML数据岛结合Dom制作通讯录
用XSL翻译Web服务应用程序
使用XSLT将XML数据转换成HTML
获取mssql的xml返回结构的方法
使用xmldom在服务器端生成静态html页面
使用纯HTML的通用数据管理和服务

XML模式:WSD


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 64 ::
收藏到网摘: n/a


Web 服务描述语言(Web Services Description Language,WSDL)提供了一种描述 Web 服务(大多使用 SOAP)的简单方法。WSDL 允许您描述利用 SOAP 标准所提供的服务和接口。
比方说,可以创建描述某台服务器上提供的服务的 WSDL 文件,然后把该文件分发给需要这些服务的 Web 服务消费者。通过阅读和解析 WSDL 文件,消费者能够了解到使用这些 Web 服务需要知道的所有信息,包括可以交换的数据类型、参数以及返回的各种错误和其他信息。
再次使用来自 W3C 的例子,可以看到不同远程函数的声明和交换的数据都是通过结构的 XML 定义处理的,如清单 3 所示。
清单 3. 不同远程函数和交换数据的 XML 定义
                                      
                <?xml version="1.0"?> <!-- root element wsdl:definitions defines set of related services --> <wsdl:definitions name="EndorsementSearch"   targetNamespace="http://namespaces.snowboard-info.com"   xmlns:es="http://www.snowboard-info.com/EndorsementSearch.wsdl"   xmlns:esxsd="http://schemas.snowboard-info.com/EndorsementSearch.xsd"   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">   <!-- wsdl:types encapsulates schema definitions of communication types;                                                        here using xsd -->   <wsdl:types>     <!-- all type declarations are in a chunk of xsd -->     <xsd:schema targetNamespace="http://namespaces.snowboard-info.com"       xmlns:xsd="http://www.w3.org/1999/XMLSchema">       <!-- xsd definition: GetEndorsingBoarder [manufacturer string,                                                         model string] -->       <xsd:element name="GetEndorsingBoarder">   <xsd:complexType>     <xsd:sequence>       <xsd:element name="manufacturer" type="string"/>             <xsd:element name="model" type="string"/>     </xsd:sequence>   </xsd:complexType>       </xsd:element>       <!-- xsd definition: GetEndorsingBoarderResponse [... endorsingBoarder string ...] -->       <xsd:element name="GetEndorsingBoarderResponse">   <xsd:complexType>     <xsd:all>       <xsd:element name="endorsingBoarder" type="string"/>     </xsd:all>   </xsd:complexType>       </xsd:element>       <!-- xsd definition: GetEndorsingBoarderFault [... errorMessage string ...] -->       <xsd:element name="GetEndorsingBoarderFault">   <xsd:complexType>     <xsd:all>       <xsd:element name="errorMessage" type="string"/>     </xsd:all>   </xsd:complexType>       </xsd:element>     </xsd:schema>   </wsdl:types>   <!-- wsdl:message elements describe potential transactions -->   <!-- request GetEndorsingBoarderRequest is of type GetEndorsingBoarder -->   <wsdl:message name="GetEndorsingBoarderRequest">     <wsdl:part name="body" element="esxsd:GetEndorsingBoarder"/>   </wsdl:message>   <!-- response GetEndorsingBoarderResponse is of type                                        GetEndorsingBoarderResponse -->   <wsdl:message name="GetEndorsingBoarderResponse">     <wsdl:part name="body" element="esxsd:GetEndorsingBoarderResponse"/>   </wsdl:message>   <!-- wsdl:portType describes messages in an operation -->   <wsdl:portType name="GetEndorsingBoarderPortType">     <!-- the value of wsdl:operation eludes me -->     <wsdl:operation name="GetEndorsingBoarder">       <wsdl:input message="es:GetEndorsingBoarderRequest"/>       <wsdl:output message="es:GetEndorsingBoarderResponse"/>       <wsdl:fault message="es:GetEndorsingBoarderFault"/>     </wsdl:operation>   </wsdl:portType>   <!-- wsdl:binding states a serialization protocol for this service -->   <wsdl:binding name="EndorsementSearchSoapBinding"                 type="es:GetEndorsingBoarderPortType">     <!-- leverage off soap:binding document style ...(no wsdl:foo pointing at the soap binding) -->     <soap:binding style="document"                   transport="http://schemas.xmlsoap.org/soap/http"/>     <!-- semi-opaque container of network transport details classed by soap:binding above ... -->     <wsdl:operation name="GetEndorsingBoarder">       <!-- again bind to SOAP? ... -->       <soap:operation soapAction="http://www.snowboard-info.com/ EndorsementSearch"/>       <!-- further specify that the messages in the wsdl:operation "GetEndorsingBoarder" use SOAP? ... -->       <wsdl:input>         <soap:body use="literal"        namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>       </wsdl:input>       <wsdl:output>         <soap:body use="literal"        namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>       </wsdl:output>       <wsdl:fault>         <soap:body use="literal"        namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>       </wsdl:fault>     </wsdl:operation>   </wsdl:binding>   <!-- wsdl:service names a new service "EndorsementSearchService" -->   <wsdl:service name="EndorsementSearchService">     <wsdl:documentation>snowboarding-info.com Endorsement Service</ wsdl:documentation>     <!-- connect it to the binding "EndorsementSearchSoapBinding" above -->     <wsdl:port name="GetEndorsingBoarderPort"                binding="es:EndorsementSearchSoapBinding">       <!-- give the binding an network address -->       <soap:address location="http://www.snowboard-info.com/EndorsementSearch"/>     </wsdl:port>   </wsdl:service> </wsdl:definitions>                          

WSDL 声明了消息类型、默认数据类型和内容以及交换的数据结构。
访问服务器上 SOAP 结构需要使用的一切信息都可以在这个 WSDL 中找到。大多数语言和环境都提供一种阅读和解析 WSDL 的机制,以确定可用的函数和数据交换。
WSDL 不仅定义了用于交换信息的 SOAP 接口,通过适当的 WSDL 生成程序,还可用于创建发送请求、生成并格式化响应所需要的代码。
WSDL 和 SOAP 组成了一个强大的远程过程调用系统。