`
chelsea
  • 浏览: 119328 次
  • 来自: ...
社区版块
存档分类
最新评论

Web Services:WSDL 1.1 规范中的几个错误

    博客分类:
 
阅读更多

读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个错误

在下面用红色字体标出了错误相关之处,用蓝色字体标出了注释

我不确定是我理解有误还是它真的错了,贴出来大家一起看看;再说现在都WSDL2.0了

原文地址:http://www.w3.org/TR/wsdl

 

1,Example 1 (同样的错误还发生在Example 2, 4,5,估计是“copy-paste” bug pattern)

Example 1 SOAP 1.1 Request/Response via HTTP

<?xml version="1.0"?>
<definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl"
          xmlns:tns="http://example.com/stockquote.wsdl"
          xmlns:xsd1="http://example.com/stockquote.xsd"
          xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          xmlns="http://schemas.xmlsoap.org/wsdl/">

    <types>
       <schema targetNamespace="http://example.com/stockquote.xsd"
              xmlns="http://www.w3.org/2000/10/XMLSchema">
           <element name="TradePriceRequest">
              <complexType>
                  <all>
                      <element name="tickerSymbol" type="string"/>
                  </all>
              </complexType>
           </element>
           <element name="TradePrice">
              <complexType>
                  <all>
                      <element name="price" type="float"/>
                  </all>
              </complexType>
           </element>
       </schema>
    </types>

    <message name="GetLastTradePriceInput">
        <part name="body" element="xsd1:TradePriceRequest"/>
    </message>

    <message name="GetLastTradePriceOutput">
        <part name="body" element="xsd1:TradePrice"/>
    </message>

    <portType name="StockQuotePortType">
        <operation name="GetLastTradePrice">
           <input message="tns:GetLastTradePriceInput"/>
           <output message="tns:GetLastTradePriceOutput"/>
        </operation>
    </portType>

    <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetLastTradePrice">
           <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
           <input>
               <soap:body use="literal"/>
           </input>
           <output>
               <soap:body use="literal"/>
           </output>
        </operation>
    </binding>

    <service name="StockQuoteService">
        <documentation>My first service</documentation>
        <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <!--应为 StockQuoteSoapBinding ? -->
           <soap:address location="http://example.com/stockquote"/>
        </port>
    </service>

</definitions>

 

2, Example 5: GetLastTradePrice vs. GetTradePrices

Example 5. SOAP binding of request-response RPC operation over HTTP

<?xml version="1.0"?>
<definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl"
          xmlns:tns="http://example.com/stockquote.wsdl"
          xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
          xmlns:xsd1="http://example.com/stockquote/schema"
          xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
          xmlns="http://schemas.xmlsoap.org/wsdl/">

    <types>
       <schema targetNamespace="http://example.com/stockquote/schema"
              xmlns="http://www.w3.org/2000/10/XMLSchema">
           <complexType name="TimePeriod">
              <all>
                  <element name="startTime" type="xsd:timeInstant"/>
                  <element name="endTime" type="xsd:timeInstant"/>
              </all>
           </complexType>
           <complexType name="ArrayOfFloat">
              <complexContent>
                  <restriction base="soapenc:Array">
                      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:float[]"/>
                  </restriction>
              </complexContent>
           </complexType>
       </schema>
    </types>

    <message name="GetTradePricesInput">
        <part name="tickerSymbol" element="xsd:string"/>
        <part name="timePeriod" element="xsd1:TimePeriod"/>
    </message>

    <message name="GetTradePricesOutput">
        <part name="result" type="xsd1:ArrayOfFloat"/>
        <part name="frequency" type="xsd:float"/>
    </message>

    <portType name="StockQuotePortType">
        <operation name="GetLastTradePrice" parameterOrder="tickerSymbol timePeriod frequency"><!--应为 GetTradePrices? -->
           <input message="tns:GetTradePricesInput"/>
           <output message="tns:GetTradePricesOutput"/>
        </operation>
    </portType>

    <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetTradePrices">
           <soap:operation soapAction="http://example.com/GetTradePrices"/>
           <input>
               <soap:body use="encoded" namespace="http://example.com/stockquote"
                          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
           </input>
           <output>
               <soap:body use="encoded" namespace="http://example.com/stockquote"
                          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
           </output>
        </operation>>
    </binding>

    <service name="StockQuoteService">
        <documentation>My first service</documentation>
        <port name="StockQuotePort" binding="tns:StockQuoteBinding">
           <soap:address location="http://example.com/stockquote"/>
        </port>
    </service>
</definitions>

 

3,Example 3: smtp?

Example 3. SOAP binding of one-way operation over SMTP using a SOAP Header

<?xml version="1.0"?>
<definitions name="StockQuote"
          targetNamespace="http://example.com/stockquote.wsdl"
          xmlns:tns="http://example.com/stockquote.wsdl"
          xmlns:xsd1="http://example.com/stockquote.xsd"
          xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          xmlns="http://schemas.xmlsoap.org/wsdl/">

    <message name="SubscribeToQuotes">
        <part name="body" element="xsd1:SubscribeToQuotes"/>
       <part name="subscribeheader" element="xsd1:SubscriptionHeader"/>
    </message>

    <portType name="StockQuotePortType">
        <operation name="SubscribeToQuotes">
           <input message="tns:SubscribeToQuotes"/>
        </operation>
    </portType>

    <binding name="StockQuoteSoap" type="tns:StockQuotePortType">
        <soap:binding style="document" transport="http://example.com/smtp"/><!--应为http://schemas.xmlsoap.org/soap/smtp? -->
        <operation name="SubscribeToQuotes">
           <input message="tns:SubscribeToQuotes">
               <soap:body parts="body" use="literal"/>
               <soap:header message="tns:SubscribeToQuotes" part="subscribeheader" use="literal"/>
           </input>
        </operation>
    </binding>

    <service name="StockQuoteService">
        <port name="StockQuotePort" binding="tns:StockQuoteSoap">
           <soap:address location="mailto:subscribe@example.com"/>
        </port>
    </service>

    <types>
        <schema targetNamespace="http://example.com/stockquote.xsd"
               xmlns="http://www.w3.org/2000/10/XMLSchema">
           <element name="SubscribeToQuotes">
               <complexType>
                   <all>
                       <element name="tickerSymbol" type="string"/>
                   </all>
               </complexType>
           </element>
           <element name="SubscriptionHeader" type="uriReference"/>
        </schema>
    </types>
</definitions>
分享到:
评论

相关推荐

    WSDL1.1标准规范

    WSDL(Web Services Description Language)1.1版本作为W3C发布的官方标准规范,是描述网络服务的一套详尽指南,旨在为开发者提供一个统一、标准化的方式,来定义和描述网络服务的功能和通信协议。这份规范的重要性...

    Web服务说明语言 (WSDL) 浅释

    Web服务说明语言(WSDL,Web Services Description Language)是一种基于XML的规范,用于定义网络服务的接口。WSDL文件是Web服务的核心组成部分,它描述了服务的位置、提供的操作以及如何与这些服务进行通信。在本篇...

    wsdl文件详解 web wervices

    WSDL文档由以下几个主要部分组成: - **服务(Service)**:定义服务的端点,即服务的实际位置,通常是一个URL。 - **绑定(Binding)**:定义服务接口如何被实际访问,包括通信协议(如HTTP、SOAP)和消息格式(如...

    Web_Service描述语言_WSDL_详解

    ### Web Service描述语言 (WSDL) 详解 #### 一、引言 WebService描述语言 (WSDL) 是一种用于描述Web服务的XML格式。通过WSDL,开发人员能够明确地指出服务的功能、如何调用这些功能以及数据如何被传递。WSDL的引入...

    wsdl事例代码

    在"wsdl事例代码"中,我们可以探讨以下几个关键知识点: 1. **WSDL结构**:WSDL文档由多个部分组成,包括服务定义、消息定义、端点定义和绑定定义。服务定义指明服务名,消息定义描述交换的数据,端点定义指出服务...

    Silverlight_WebServices范例

    在这个过程中,我们将讨论以下几个关键知识点: 1. **Silverlight简介**:Silverlight是微软推出的一种轻量级的插件技术,用于构建丰富的、交互式的网络应用。它支持多媒体、图形和动画,特别适用于开发富互联网...

    gsoap最新的wsdl文件

    首先,WSDL文件的核心内容包括以下几个部分: 1. **服务(Service)**:定义服务的位置,即服务可以被访问的网络地址。 2. **端口(Port)**:是服务的具体访问点,每个端口都有一个特定的绑定(Binding),规定了...

    wsdl解析工具

    一个WSDL文件通常包含以下几个关键元素: - **服务(Service)**:定义服务的端点(endpoint),即服务的实际位置。 - **绑定(Binding)**:描述服务如何被访问,包括使用的传输协议(如HTTP或SOAP over HTTP)和...

    wsdl教程 w3c

    WSDL文档通常包含以下几个部分: - **文档声明(XML Header)**:定义文档的基本属性,如版本信息。 - **命名空间(Namespaces)**:定义使用的命名空间,避免元素名冲突。 - **类型定义(Types)**:定义消息中...

    wsdl文件原公司超详细

    一个WSDL文件通常由以下几个主要部分组成: - **文档声明**:包含XML命名空间和WSDL版本信息。 - **服务定义**:定义服务的整体结构,包括服务名和服务端点(即服务的网络地址)。 - **消息定义**:描述在服务交互...

    J2me连接WebServices框架 - kSOAP2源码

    在这个"J2me连接WebServices框架 - kSOAP2源码"中,我们可以学习以下几个关键知识点: 1. **J2ME 平台**:J2ME 包含一组可配置的 Java 技术,适用于有限内存和处理能力的设备。它包括 MIDP(Mobile Information ...

    wsdl.rar_ wsdl_WSDL_wsdl soap

    WSDL文档由以下几个主要部分组成: - **服务(Service)**:定义服务的访问点,即客户端可以通过哪些URL来访问服务。 - **端口类型(PortType)**:描述服务提供的操作集,类似于接口。 - **绑定(Binding)**:...

    wsdl教程标签解析

    WSDL文档由几个关键元素构成: 1. ****:文档的根元素,包含了整个Web服务的定义。 2. ****:定义服务所用的数据类型,通常使用XML Schema来定义。 3. ****:描述了在服务操作中交换的消息结构,可以包含一个或多个...

    关于net. webservice修改wsdl标签名称

    5. **配置Web.config**: 在Web.config文件中,可以通过`&lt;system.webServices&gt;`节的`&lt;wsdlHelpGenerator&gt;`子节点来配置WSDL生成行为。虽然不能直接更改标签名称,但可以控制WSDL帮助页面的显示。 6. **使用svcutil...

    spring webservices reference

    契约优先方法是一种开发Web服务的方法论,其中首先定义接口规范(通常为XSD或WSDL),然后根据这些规范生成代码。这种方法强调了接口设计的重要性,并有助于确保服务实现与接口之间的一致性。 ##### 2.2 对象/XML...

    WSDL基础语法讲解

    WSDL(Web Services Description Language)是一种基于XML的语言,用于描述网络服务。它是一种标准化的方法,用于描述网络服务的使用方式,以便客户端应用程序能够发现、调用和与网络服务进行交互。WSDL文件为服务的...

    Web服务技术标准与规范.docx

    Web服务的标准化工作主要围绕以下几个关键技术: 1. SOAP(Simple Object Access Protocol):SOAP是用于在Web服务中传输信息的协议。它基于XML,提供了封装、编码和消息传输的规范,确保数据能够在不同的系统间...

    开发webservices所需要的全部jar包xfire

    首先,XFire的核心组件包括以下几个方面: 1. **SOAP绑定**:XFire支持SOAP 1.1和1.2协议,这是Web服务最常用的传输协议。它将XML消息转换为HTTP请求,以便在服务器和客户端之间传递数据。 2. **WSDL生成器**:...

    Java2WSDL和WSDL2Java操作指南.doc

    Java2WSDL和WSDL2Java是两种在Java与Web服务之间进行交互的重要工具,它们在企业级软件开发中扮演着关键角色。本指南将详细解释这两个工具的用途、工作原理以及如何在实际项目中应用。 Java2WSDL工具允许开发者从...

    05.WebService核心之WSDL深入详解

    一个WSDL文档通常包含以下几个部分: 1. **服务定义**:声明服务的全局唯一标识URI,以及服务的端点(也称为SOAP地址或绑定),这是客户端实际调用服务的地方。 2. **消息定义**:定义在服务中交换的数据结构,...

Global site tag (gtag.js) - Google Analytics