• 技术文章 >后端开发 >XML/RSS教程

    XML模式-WSD的描述

    黄舟黄舟2017-03-14 16:17:34原创1404

    Web 服务描述语言(Web Services Description Language,WSDL)提供了一种描述 Web 服务(大多使用 SOAP)的简单方法。WSDL 允许您描述利用 SOAP 标准所提供的服务和接口。 比方说,可以创建描述某台服务器上提供的服务的 WSDL 文件,然后把该文件分发给需要这些服务的 W
    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 组成了一个强大的远程过程调用系统。

    以上就是XML模式-WSD的描述的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:XML,WSD
    上一篇:简单介绍XML模式相关常用的缩写词 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 使用xmlhttp为网站增加域名查询功能的示例代码分享• XML学习(一)元素,属性,读取详解• 四种XML解析方式详解• XML数据查询技术已经成为现今的研究热点• 使用JavaScript访问XML数据
    1/1

    PHP中文网