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

XML
一个以Javascript+xml的树型列表
用ajax技术制作在线歌词搜索功能
网络编程:如何生成XML数据
如何让WebServer返回指定XML内容
网页编程必看:XML文法分析
编程:如何生成XML数据
用PHP与XML联手进行网站编程
Javascript+XML实现分页的实例
XML技巧五则
使用xmlhttp为网站增加域名查询功能
详解XML-RPC和JAX-RPC
XML在.net平台下的自定义控件的应用(1)
XML在.net平台下的自定义控件的应用(2)
基础知识认识XML:下一代网络的基石
Web2.0岁月:使用AJAX技术的十大理由
了解 XML实现通用的数据访问
AJAX基础教程及初步使用
Web设计中如何使用XML数据
AJAX应用之草稿自动保存
XML 中的常见问题(一)

XML模式:WSD


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 63 ::
收藏到网摘: 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 组成了一个强大的远程过程调用系统。