WSDL 规范(中文版)
    • WSDL 规范(中文版)

    WSDL 规范(中文版)

    一、简介

    Web 服务描述语言 (WSDL)2.0 提供了一种模型和 XML 格式来描述 Web 服务。WSDL 2.0 使得可以将服务提供的抽象功能与服务描述的具体细节(如“如何”和“在哪里”提供该功能)分离开来。

    本规范定义了一种语言来描述服务的抽象功能,以及描述服务描述的具体细节的框架。它还定义了该语言文档的一致性标准。

    配套规范 Web 服务描述语言 (WSDL)2.0 第 2 部分:扩展[WSDL 2.0 扩展]描述了消息交换模式、操作安全性、操作风格和绑定扩展(用于 SOAP [SOAP 1.2 第 1 部分:消息框架(第 2 版)]和 HTTP [IETF RFC 2616])。

    1.1 服务说明

    WSDL 2.0 从抽象和具体两个基本阶段描述一个 Web 服务。在每个阶段中,描述都使用了一些结构来提高描述的重用性,并分离独立的设计关注点。

    在抽象级别上,WSDL 2.0 根据它发送和接收的消息来描述 Web 服务;使用类型系统(通常是 XML Schema)独立于特定线路格式来描述消息。

    操作将消息交换模式与一个或多个消息相关联。消息交换模式标识发送和/或接收消息的顺序和基数,以及从逻辑上发送给谁和/或从谁那里接收。接口在不承诺传输或线路格式的情况下将操作组合在一起。

    在具体级别上,绑定为一个或多个接口指定传输和线路格式细节。端点将网络地址与绑定相关联。最后,服务组合实现共同接口的端点。

    1.2 服务描述的含义

    WSDL 2.0 服务描述指明了潜在客户应如何与所描述的服务进行交互。它表示所描述的服务完全实现并符合 WSDL 2.0 文档所描述的内容。例如,如 6.1.1 必需扩展进一步解释的那样,如果 WSDL 2.0 文档指定了特定的可选扩展,则该扩展所暗示的功能对客户来说只是可选的。它必须由 Web 服务支持。

    WSDL 2.0 接口描述了与 Web 服务的潜在交互,而不是必需的交互。在 WSDL 2.0 接口中声明操作不是断言必须发生所描述的交互的断言。而是如果以某种方式发起此类交互,则声明的操作描述了预期发生交互的方式。

    1.3 文档一致性

    命名空间为 “http://www.w3.org/ns/wsdl” 且本地名为 description 的元素信息项(如 [XML 信息集]中定义)如果它根据本规范针对该元素定义的 XML 模式(http://www.w3.org/2007/06 /wsdl/wsdl20.xsd) 有效,并且附加遵守本规范中包含的所有约束并符合其中包含的任何扩展的规范,则符合本规范。这样的符合要求的元素信息项构成 WSDL 2.0 文档。

    WSDL 2.0 语言的定义基于 XML 信息集[XML 信息集],但也在此 XML Infoset 结构一致性之上强加了许多语义约束。为了精确描述这些约束并作为精确定义每个 WSDL 2.0 文档含义的辅助手段,WSDL 2.0 规范在 XML Infoset 之上定义了一个组件模型 2.组件模型作为额外的抽象层。约束和含义都是根据这个组件模型定义的,每个组件的定义都包括一个映射,该映射指定组件模型中的值如何从相应的 XML Infoset 项派生。

    与 WSDL 2.0 XML 模式有效且映射到有效的 WSDL 2.0 组件模型的 XML 1.0 文档符合 WSDL 2.0 规范。

    1.4 表示法约定

    本规范的所有部分都是规范性的,但注释、伪模式、示例和明确标记为“非规范性”的部分除外。

    1.4.1 RFC 2119 关键字

    本文档中的关键字 “MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY” 和 “OPTIONAL” 是为了应按照 RFC 2119 [ IETF RFC 2119 ] 中的描述进行解释。

    1.4.2 RFC 3986 命名空间

    命名空间名称的一般形式:

    • “http://example.org/...” 和
    • “http://example.com/...”

    表示应用程序或上下文相关的 URI [ IETF RFC 3986 ]。

    XML Schema anyURI

    本规范使用 XML Schema 类型 xs:anyURI (参见 [XML Schema: 数据类型])。它被定义为 xs:anyURI 值本质上是 IRI(参见 [IETF RFC 3987])。从 xs:anyURI 值转换到实际 URI 是通过一个逃逸过程定义的(参见 [XLink 1.0]),在大多数方面与 IRI 第 3.1 节(参见 [IETF RFC 3987])相同。

    为了互操作性,建议 WSDL 作者避免使用 US-ASCII 字符:"<",">",""","空格","{","}","|","","^"和"`",这些字符被 xs:anyURI 类型允许,但在 IRI 中不允许。

    1.4.4 本规范中使用的前缀和命名空间

    本规范在整个文件中使用了预定义的命名空间前缀;它们在以下列表中给出。请注意,任何命名空间前缀的选择都是任意的,没有语义意义(参见 [XML 命名空间])。

    前缀命名空间说明
    wsdl"http://www.w3.org/ns/wsdl"由本规范定义
    wsdli"http://www.w3.org/ns/wsdl-instance"由本规范定义的 7.1 wsdli:wsdlLocation 属性信息项
    wsdlx"http://www.w3.org/ns/wsdl-extensions"由本规范定义的 3.3 描述引用服务和端点的消息
    wrpc"http://www.w3.org/ns/wsdl/rpc"由 WSDL 2.0 附录 [WSDL 2.0 Adjuncts] 定义
    wsoap"http://www.w3.org/ns/wsdl/soap"由 WSDL 2.0 附录 [WSDL 2.0 Adjuncts] 定义
    whttp"http://www.w3.org/ns/wsdl/http"由 WSDL 2.0 附录 [WSDL 2.0 Adjuncts] 定义
    xs"http://www.w3.org/2001/XMLSchema"在 W3C XML 模式规范 [XML Schema: 结构]、[XML Schema: 数据类型] 中定义
    xsi"http://www.w3.org/2001/XMLSchema-instance"在 W3C XML 模式规范 [XML Schema: 结构]、[XML Schema: 数据类型] 中定义

    1.4.5 本规范中使用的术语

    本节描述 WSDL 版本 2.0 规范(本文档)第 1 部分中引入的术语和概念。

    • 实际值

      如在[ XML Schema:Structures ]中一样,表达式“实际值”用于指代与对应于其规范化值的属性信息项相关联的简单类型定义的值空间的成员。这通常是一个字符串,但也可能是一个整数、布尔值、IRI 引用等。

    • 内联模式

      在WSDL 2.0 描述的wsdl:types 元素信息项中定义的 XML 模式。例如,xs:schema 元素信息项 3.1.2内联XML Schema中定义的XML Schema 。

    1.4.6 XML 信息集属性

    本规范引用[XML信息集]中的属性。这样的属性用方括号表示,例如[children]、[attributes]。

    1.4.7 WSDL 2.0 组件模型属性

    本规范定义并引用了 WSDL 2.0 组件模型 2. 组件模型中的属性。这些属性用大括号表示,例如{ name }、{ interfaces }。

    本规范对引用组件的组件模型属性使用一致的命名约定。如果属性引用必需或可选组件,则属性名称与组件名称相同。如果属性引用一组组件,则属性名称是组件名称的复数形式。

    1.4.8 Z 表示法

    开发本规范时使用了 Z 表示法[Z 表示法参考手册]。Z 表示法是一种基于标准数学符号的正式规范语言。该规范的 Z 表示法已使用 Fuzz 2000 类型检查器 [Fuzz 2000] 进行了验证。

    由于 Z 表示法不是众所周知的,所以它不包括在本规范的规范版本中。然而,它包含在一个非规范版本中,该版本允许动态隐藏和显示 Z 表示法。只要安装了所需的字体,浏览器就可以正确显示数学 Unicode 字符。Mozilla Firefox 的数学字体可以从 Mozilla 网站下载。

    Z 表示法用于提高定义组件模型的规范文本的质量,并帮助确保测试套件覆盖了组件模型隐含的所有重要规则。但是,Z 表示法是非规范的,所以它与规范文本之间的任何冲突都是 Z 表示法中的错误。尽管如此,读者和实现者仍可能发现 Z 表示法在规范文本不清晰的情况下有用。

    有两个 Z 表示法语法元素与前面各节中描述的表示法约定相冲突。在 Z 表示法中,方括号用于引入基本集合,例如 [ID],这与使用方括号表示 XML 信息集属性 1.4.6 XML 信息集属性相冲突。另外,在 Z 表示法中,花括号用于表示集合显示和集合推导,例如 {1, 2, 3},这与使用花括号表示 WSDL 2.0 组件模型属性 1.4.7 WSDL 2.0 组件模型属性相冲突。但是,根据上下文,方括号和花括号的预期含义应该是清晰的,这种次要的表示法冲突不应该造成任何困惑。

    1.4.9 BNF 伪模式

    在每个组件的描述之前,提供伪模式。它们使用 BNF 样式的约定用于属性和元素:"?" 表示可选性(即零次或一次出现),"*" 表示零次或多次出现,"+" 表示一次或多次出现,"["和"]"用于形成组,"|"表示选择。按照规范模式中定义的那样,为属性赋予一个与其类型对应的值。为具有简单内容的元素赋予与其内容类型对应的值,如规范模式中定义的那样。为简洁起见,伪模式不包括扩展点。

    <!-- sample pseudo-schema -->
    <defined_element
          required_attribute_of_type_string="xs:string"
          optional_attribute_of_type_int="xs:int"? >
      <required_element />
      <optional_element />?
      <one_or_more_of_these_elements />+
      [ <choice_1 /> | <choice_2 /> ]*
    </defined_element>
    

    1.4.10 断言

    有关未由 WSDL 2.0 规范 XML 模式强制执行的 WSDL 2.0 文档和组件的断言在句子末尾用匕首符号 (†) 标记。每个断言都被分配了一个唯一的标识符,该标识符由描述性文本前缀和唯一的数字后缀组成。数字后缀按顺序分配并且从不重复使用,因此序列中可能存在间隙。断言标识符可以被本规范的实现用于任何目的,例如错误报告。

    E. 断言摘要部分总结了断言及其标识符 。

    2. 组件模型

    本节描述了 WSDL 2.0 的概念模型,即一组附加了属性的组件,它们共同描述了一个 Web 服务。这个模型被称为 WSDL 2.0 的组件模型。一个有效的 WSDL 2.0 组件模型是一组满足本规范中所有要求的 WSDL 2.0 组件和属性,这些要求由关键字表示,其解释定义于 RFC 2119 [IETF RFC 2119]。

    组件是对应于 Web 服务不同方面的类型化属性集合。本文的每个小节都描述了不同类型的组件、其定义的属性及其作为 XML 信息集 [ XML Information Set ] 的表示。

    属性是无序的,并且与它们关联的组件唯一的。个别属性的定义可能会约束其内容(例如约束为类型化的值、另一个组件或类型化的值/组件的集合),并且组件可能需要属性的存在才能被认为符合规范。这种属性被标记为 REQUIRED,而那些不需要存在的属性则被标记为 OPTIONAL。按照惯例,在指定从组件的 XML 信息集表示到组件本身的映射规则时,如果 Optional 属性在相关组件中不存在,则描述为 “empty”。除非另有说明,当一个属性被确定为一个集合 (set 或 list) 时,其值可以是一个 0 元素(empty)的集合。为了简化处理组件集合的规则,对于所有类型为集合的 OPTIONAL 属性,如果该属性不存在于一个组件中,必须将其语义上视为等效于存在一个同名属性,其值为 empty set。换句话说,每个 OPTIONAL 的集合值属性都必须假定具有 empty set 作为其默认值,在属性不存在的情况下使用。

    组件定义可序列化为 XML 1.0 格式,但独立于组件模型的任何特定序列化。组件定义使用 XML Schema 1.0 规范[XML模式:数据类型]中定义的简单类型的子集(参见 2.14 在组件模型中使用的 XML 模式 1.0 简单类型)。

    除了这里描述的直接 XML 信息集表示之外,组件模型还允许组件在信息集之外通过 4.模块化 WSDL 2.0 描述 中描述的机制。

    通过从元素 information item 开始,将信息项递归地映射到其标识的组件,可以从符合 WSDL 2.0 的 XML 模式的给定 XML 信息集中提取组件wsdl:description 模型。这包括4. 模块化 WSDL 2.0 描述中描述的机制的应用。

    本文档没有指定从组件模型实例生成 XML 信息集表示的方法。特别是,通常有许多有效的方法可以将给定的组件模型实例模块化为一个或多个 XML 信息集。

    2.1 说明

    2.1.1 描述组件

    从较高的层次来看,描述组件只是两类组件的容器:WSDL 2.0 组件和类型系统组件。

    WSDL 2.0 组件是接口、绑定和服务。类型系统组件是元素声明和类型定义。

    类型系统组件描述消息内容的约束。默认情况下,这些约束以[ XML信息集 ]的形式表达,即它们定义元素信息项的[本地名称]、[命名空间名称]、[子级]和[属性]属性。基于其他数据模型的类型系统通常通过 WSDL 2.0 的扩展来适应;请参阅6. 语言扩展性。在它们定义与 XML 模式全局元素声明等效的信息的情况下,可以将它们视为此类声明。

    本规范没有定义使用多种模式语言同时描述类型系统组件的 WSDL 2.0 文档的行为。

    元素声明组件定义元素信息项的名称和内容模型,如 XML 模式全局元素声明所定义的。它有一个 {name} 属性,是元素信息项的 QName,和一个 {system} 属性,是扩展元素信息项的类型系统的命名空间 IRI,例如 XML 模式的命名空间。

    类型定义组件定义元素信息项的内容模型,如 XML 模式全局类型定义所定义的。它有一个 {name} 属性,是类型的 QName,和一个 {system} 属性,是扩展元素信息项的类型系统的命名空间 IRI,例如 XML 模式的命名空间。

    接口、绑定、服务、元素声明和类型定义组件直接包含在描述组件中,并称为顶级组件。顶级 WSDL 2.0 组件包含其他组件,如接口操作和端点,这些组件称为嵌套组件。嵌套组件可能包含其他嵌套组件。包含嵌套组件的组件称为嵌套组件的父组件。嵌套组件有一个 {parent} 属性,是对其父组件的引用。

    [描述]组件的属性如下:

    • {interfaces} 可选。一组接口组件。
    • {bindings} 可选。一组绑定组件。
    • {services} 可选。一组服务组件。
    • {element declarations} 可选。一组元素声明组件。
    • {type definitions} 必需。一组类型定义组件。

    与初始 WSDL 2.0 文档关联的描述组件中包含的顶级组件集由初始文档中定义的组件,加上与初始文档包含的 WSDL 2.0 文档关联的组件,加上其他文档定义的组件组成。 WSDL 2.0 文档位于初始文档导入的命名空间中。组件模型不区分初始文档中定义的组件与包含的文档或导入的命名空间中定义的组件。然而,任何包含通过 QName 引用属于不同名称空间的 WSDL 2.0 组件的组件定义的 WSDL 2.0 文档都必须包含 该名称空间的wsdl:import 元素信息项(请参阅4.2 导入描述)。此外,所有 QName 引用,无论是相同的命名空间还是不同的命名空间,都必须解析为组件(请参阅2.17 QName 解析)。

    在使用 XML 模式语言描述类型系统组件时,在描述组件中包含元素声明组件和类型定义组件受 3.1 使用 W3C XML 模式定义语言的规则约束。

    除了 WSDL 2.0 组件和类型系统组件之外,还可以通过扩展性 6. 语言扩展性添加其他扩展组件。此外,还可以通过可扩展性添加 WSDL 2.0 和类型系统组件的附加属性。

    2.1.2 描述组件的XML表示

    <description
          targetNamespace="xs:anyURI" >
      <documentation />*
      [ <import /> | <include /> ]*
      <types />?
      [ <interface /> | <binding /> | <service /> ]*
    </description>
    

    WSDL 2.0 描述在 XML 中由一个或多个 WSDL 2.0 信息集 (Infoset) 表示,即一个或多个 description 元素信息项。wsdl:import WSDL 2.0 信息集包含共享公共目标名称空间和零个或多个元素信息项的WSDL 2.0 组件集合的表示。 4.2 导入 与具有来自多个目标名称空间的组件的集合相对应的描述。

    属于某个 Description 组件内直接定义或包含的组件被认为属于同一目标命名空间。因此目标命名空间为一组相关的组件定义建立一组不产生歧义的名称。targetNamespace 属性信息项的值应该是可以解析的。它应该解析到一个人类或机器可以处理的文档,这个文档直接或间接定义了这些组件的预期语义。它可能解析到为该命名空间提供服务描述信息的 WSDL 2.0文档。

    如果一个 WSDL 2.0 文档被拆分成多个 WSDL 2.0 文档(可根据需要通过“包含描述”组合),则 targetNamespace 属性信息项应该解析到一个主 WSDL 2.0 文档,该文档包含提供该服务描述所需的所有 WSDL 2.0 文档。这种方法可以让 WSDL 2.0 组件设计器片段标识符得到适当解析。

    属于导入命名空间的组件具有与导入 WSDL 2.0 文档不同的目标命名空间值。因此,导入是一种在定义来自另一个名称空间的组件时使用来自一个名称空间的组件的机制。

    请注意,每个同类的 WSDL 2.0 文档或类型系统组件必须由其限定名称唯一标识。也就是说,如果同一类型的两个不同组件(Interface、Binding等)位于同一目标命名空间中,则它们的 QName 必须是唯一的。然而,不同类型的组件(例如,接口组件和绑定组件)可以具有相同的 QName。因此,组件的 QName 在给定目标命名空间中的这些组件的空间内必须是唯一的。

    元素description 信息项 具有以下 Infoset 属性:

    • 本地名称为 description。

    • 命名空间名称为 "http://www.w3.org/ns/wsdl"。

    • [attributes]中的一个或多个属性信息项如下:

      • 一个 REQUIRED 的 targetNamespace 属性信息项,如下2.1.2.1所述。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中有零个或多个元素信息项,顺序如下:†

      1. 零个或多个documentation 元素信息项(参见5. 文档)。

      2. 以下各项中的零个或多个元素信息项(按任何顺序):

        • 零个或多个include 元素信息项(参见4.1 包括描述)
        • 零个或多个import 元素信息项(参见4.2导入描述)
        • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
      3. 可选types 元素信息项 (请参阅3. 类型)。

      4. 以下各项中的零个或多个元素信息项(按任何顺序):

        • interface 元素信息 item s(参见 2.2.2 接口组件的XML表示)。
        • binding 元素信息 item s(参见 2.7.2 绑定组件的 XML 表示)。
        • service 元素信息 item s(参见 2.12.2 服务组件的 XML 表示)。
        • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    2.1.2.1 targetNamespace 属性信息项

    属性targetNamespace *信息项定义了该 description 元素信息项中定义的顶级组件的命名空间从属关系。Interface、Binding 和 Service 是顶级组件。

    属性targetNamespace 信息项具有以下Infoset属性:

    • [当地名称]targetNamespace
    • 没有值的[命名空间名称]

    targetNamespace 属性信息项的类型为xs:anyURI。它的值必须是绝对 IRI(请参阅 [ IETF RFC 3987 ])并且应该是可取消引用的。†

    2.1.3 将描述的 XML 表示映射到组件属性

    表2-1描述了从 description 元素信息项的XML 表示(参见 2.1.2 描述组件的XML 表示)到 描述组件的属性的映射。

    属性值
    {interfaces}与元素interface 信息项的 [子项] 中的所有元素description 信息项(如果有) 相对应的接口组件集,加上任何包含(通过wsdl:include)或导入(通过 wsdl:import)的接口组件(请参阅4. 模块化 WSDL 2.0 描述)。
    {bindings}与元素信息项的 [子项] 中的所有元素信息项(如果有) 相对应的Binding组件集,加上任何包含(通过)或导入(通过 )的Binding 组件(请参阅4. 模块化 WSDL 2.0 描述)。binding **description **wsdl:include``wsdl:import****
    {services}对应于描述元素信息项[子项]中所有服务元素信息项的服务组件集合,如果有的话,加上任何包含的(通过 wsdl:include)或导入的(通过 wsdl:import)服务组件(见 4. 模块化 WSDL 2.0 描述)。
    {element declarations}与定义为元素信息项的后代的所有元素声明相对应的元素types 声明组件集(如果有),加上任何包含(通过xs:include)或导入(通过xs:import)元素声明组件。这至少将包括由 XML 模式element 元素信息项定义的所有全局元素声明。它还可以包括来自其他类型系统的任何声明,这些类型系统描述元素信息项的[本地名称]、[命名空间名称]、[属性]和[子级]属性。每个 XML 模式元素声明必须有一个唯一的 QName。†
    {type definitions}与定义为types 元素信息项的后代的所有类型定义相对应的类型定义组件集(如果有),加上任何包含(通过xs:include)或导入(通过 xs:import)类型定义组件。[另外,XML Schema Part 2: Datatypes Second Edition XML Schema: Datatypes ]定义的内置数据类型,即十九种原始数据类型xs:string, xs:boolean, xs:decimal, xs:float, xs:double, , xs:duration, xs:dateTime, xs:time, xs:date, xs:gYearMonth, xs:gYear, xs:gMonthDay, xs:gDay, xs:gMonth, xs:hexBinary, xs:base64Binary, xs:anyURI, xs:QName,xs:NOTATION和二十五个派生数据类型xs:normalizedString, xs:token, xs:language, xs:NMTOKEN, xs:NMTOKENS, xs:Name, xs:NCName, , xs:ID, xs:IDREF, xs:IDREFS, xs:ENTITY, , xs:ENTITIES, xs:integer,xs:nonPositiveInteger,xs:negativeInteger,xs:long,xs:int,xs:short,xs:byte,xs:nonNegativeInteger,xs:unsignedLong,xs:unsignedInt,xs:unsignedShort,xs:unsignedByte,xs:positiveInteger。该集合还可以包括来自其他类型系统的任何定义,这些定义描述了 元素信息项的 [attributes] 和 [children] 属性。每个 XML 模式类型定义必须有一个唯一的 QName。†

    2.2 接口

    2.2.1 接口组件

    接口组件描述了服务发送和/或接收的一系列消息。它通过将相关的消息分组到操作中来实现这一点。操作是输入和输出消息的序列,接口是一组操作。

    接口可以选择扩展一个或多个其他接口。为了避免循环定义,接口绝不能出现在它所扩展的接口集合中,无论是直接还是间接扩展。接口中可用的操作集合包括它直接或间接扩展的所有接口所定义的所有操作,以及它直接定义的任何操作。在接口上直接定义的操作称为接口的声明操作。在这个过程中,根据 2.1 5节的等价组件,等价的操作组件将被视为单个组件。接口扩展机制对接口内可以定义的所有其他组件(即接口故障组件)的行为方式与之类似。

    接口是命名构造,可以通过 QName 引用(参见2.17 QName 解析)。例如,Binding组件以这种方式引用接口。

    [Interface]组件的属性如下:

    • {name} 必填。xs  :QName。
    • {extended interfaces} 可选。该接口扩展的一组声明的接口组件。
    • {interface faults} 可选。声明的接口故障组件集。请注意,此集合中每个接口故障的 { name } 属性的命名空间名称与该接口组件的 { name } 属性的命名空间名称相同。
    • {interface operations} 可选。一组已声明的接口操作组件。请注意,该集合中每个 接口操作的 { name } 属性的命名空间名称与该接口组件的 { name } 属性的命名空间名称相同。

    对于 描述组件的 { interfaces } 属性中的每个接口组件 ,{ name } 属性必须是唯一的。†

    2.2.2 接口组件的XML表示

    <description>
      <interface
            name="xs:NCName" 
            extends="list of xs:QName"?
            styleDefault="list of xs:anyURI"? >
        <documentation />*
        [ <fault /> | <operation /> ]*
      </interface>
    </description>
    

    <interface> 元素具有以下信息集属性:

    • [当地名称]interface

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • [attributes]中的一个或多个属性信息项如下:

      • 必需的name 属性信息项 ,如下面2.2.2.1 具有接口 [owner element] 的名称属性信息项中所述。
      • 可选的 extends 属性,详见下面的 extends 属性信息项
      • 可选的 styleDefault 属性,详见下面的 styleDefault 属性信息项
      • 命名空间不为 "http://www.w3.org/ns/wsdl" 的其他命名空间限定属性信息项
    • 子元素包含以下信息项,顺序为:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。

      2. 以下各项中的零个或多个元素信息项(按任何顺序):

        • 零个或多个fault 元素信息项2.3.2接口故障组件的XML表示。
        • 零个或多个operation 元素信息项2.4.2接口操作组件的XML表示。
        • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    2.2.2.1带有 [owner元素]name 的属性信息项interface

    属性name 信息项 与[parent]元素信息targetNamespace 项的属性description 信息项一起构成接口的QName。

    属性name 信息项具有以下 Infoset属性:

    • [当地名称]name
    • 没有值的[命名空间名称]
    • name 属性信息项的类型为 xs:NCName。
    2.2.2.2extends 属性信息项

    属性extends 信息项 列出了该接口派生的接口。

    属性extends 信息项具有以下Infoset属性:

    • [当地名称]extends

    • 没有值的[命名空间名称]

    • extends 属性信息项的类型是 xs:QName 的空格分隔列表。

    • extends 属性信息项中的 xs:QName 列表不能包含重复项。

    2.2.2.3 styleDefault 属性信息项

    styleDefault 属性指示默认的样式(参见2.4.1.2操作样式),该样式用于构造接口中所有操作的{interface message references}属性中的{element declaration}。

    属性styleDefault 信息项具有以下 Infoset 属性:

    • [当地名称]styleDefault.
    • 没有值的[命名空间名称]。

    styleDefault 属性信息项的类型为xs:anyURI 的列表。它的值(如果存在)必须包含绝对 IRI(请参阅 [ IETF RFC 3987 ])。†

    2.2.3 将接口的 XML 表示映射到组件属性

    interface 元素信息项的XML表示 (参见 2.2.2接口组件的XML表示)到接口组件属性的映射如 表2-2所示。

    财产价值
    {name}本地名称为name 属性信息项实际值 、命名空间名称为 [parent]元素信息项targetNamespace 属性信息项实际值的QNamedescription**
    {extended interfaces}由 extends 属性中的值解析出的接口组件集合(如果有的话,参见 2.17 QName 解析)
    {interface faults}[children] 中 fault 元素信息项对应的接口故障组件集合(如果有的话)
    {interface operations}[children] 中 operation 元素信息项对应的接口操作组件集合(如果有的话)
    • 注意根据 2.2.1 接口组件,给定接口组件的{extended interfaces}属性中的接口组件不能在它们的{extended interfaces}属性中包含该接口组件,也就是说,不允许递归扩展接口。

    2.3 接口故障

    2.3.1 接口故障组件

    故障是在执行消息交换期间发生的、破坏消息正常流动的事件。

    当一方无法在正常消息流内传达错误情况,或者一方希望终止消息交换时,通常会引发故障。故障消息可用于传送带外信息,例如错误原因、故障起源以及其他非正式诊断(例如程序堆栈跟踪)。

    接口故障组件 描述了在调用接口操作期间可能发生的故障。接口故障组件通过命名抽象故障并指示故障消息的内容来声明抽象故障。故障消息何时以及如何流动由接口操作组件指示 。

    接口故障 组件提供了一种清晰的机制来命名和描述接口可能生成的故障集。这使得操作人员可以通过名称轻松识别可能产生的各个故障。该机制允许轻松识别跨多个操作发生的并在多个绑定中引用的相同故障,并减少对单个故障的重复描述。

    除了接口组件中描述的故障之外,还可能在运行时生成故障,即故障是开集。接口组件描述具有应用程序级语义的故障,即客户端或服务期望作为应用程序处理逻辑的一部分来处理并可能从中恢复。例如,接受信用卡号的接口组件可能会描述指示信用卡号无效、已报告被盗或已过期的故障。接口组件不描述一般系统故障,例如网络故障、内存不足情况、磁盘空间不足情况、无效消息格式等,尽管这些故障可能作为消息交换的一部分生成。可以合理地预期此类一般系统故障会发生在任何消息交换中,因此在接口组件中明确描述它们是没有信息的。

    接口故障组件的属性如下:

    • {[Name]} 必填。xs  :QName。
    • {[message content mode]} 必需。一个 xs:token,取值可以是 #any、#none、#other 或 #element。#any 表示故障内容是任意单个元素。#none 表示没有故障内容。#other 表示故障内容由某个引用非 XML 扩展类型系统中的声明的其他扩展属性描述。#element 表示故障由单个元素组成,该元素由 {element declaration} 属性引用的全局元素声明描述。仅当使用基于 XML Infoset 的数据模型描述故障时,才使用此属性。
    • {[element declaration]} 可选。对描述组件的 {element declarations} 属性中的 Element Declaration 组件的引用。此元素表示故障的内容或“载荷”。当 {message content model} 属性值为 #any 或 #none 时,{element declaration} 属性必须为空。
    • {[ parent } 必需。包含此组件的接口组件,在其 {interface faults} 属性中。

    对于接口组件的 {interface faults} 属性中的每个接口故障组件,{name} 属性必须唯一。请注意,这一约束由规范的 WSDL 2.0 XML 模式执行。

    接口故障组件通过封闭的接口组件的 QName 和接口故障组件自身的 QName 来唯一标识。

    **注意:

    尽管有 {name} 属性,但接口故障组件不能仅通过其 QName 来标识。事实上,两个 {name} 属性值的命名空间名称相同但本地名称不同的接口组件可以包含具有相同 {name} 属性值的接口故障组件。因此,接口故障组件的 {name} 属性不足以形成接口故障组件的唯一标识。A.2 Fragment Identifiers 中定义了唯一标识组件的方法。请参阅 A.2.5 The Interface Fault Component 中接口故障组件片段标识符的定义。

    由于接口扩展了一个或多个其他接口,如果两个或多个接口故障组件的 {name} 属性具有相同的值,则这些接口故障组件的组件模型必须相同。如果接口故障组件相同,则它们被视为减少为单个组件。在同一接口组件中,如果两个接口故障组件不等效,则它们的 {name} 属性的值不能相同。

    注意,根据上述规则,如果两个接口的 {name} 属性的命名空间名称相同,并且一个或多个故障的 {name} 属性的值也相同,则只要这些故障不是相同的故障,这两个接口就都不能成为派生接口的派生链的一部分。

    因此,在命名空间内使接口故障组件的 {name} 属性的本地名称唯一是一种良好的实践,这可以避免这种派生时无意中发生错误。

    如果使用的不是基于 XML Infoset 的类型系统(如 3.2 使用其他模式语言中所述),则需要向接口故障组件添加其他属性(以及向其 XML 表示形式添加扩展属性),以允许将此类消息类型与消息引用相关联。

    2.3.2 接口故障组件的XML表示

    <description>
      <interface>
        <fault
              name="xs:NCName" 
              element="union of xs:QName, xs:token"? >
          <documentation />*
        </fault>
      </interface>
    </description>
    

    接口故障组件的 XML 表示为一个元素信息项,具有以下 Infoset 属性:

    • 本地名称为 fault

    • 命名空间名称为 "http://www.w3.org/ns/wsdl"

    • 在其 [attributes] 中的属性信息项如下:

      • 必需的 name 属性信息项,如下 2.3.2.1 所述
      • 可选的 element 属性信息项,如下 2.3.2.2 所述
      • 命名空间限定的属性信息项,其 [namespace name] 不为 "http://www.w3.org/ns/wsdl"
    • 在其 [children] 中的顺序元素信息项如下:

      • 零个或多个 documentation 元素信息项(参见 5. 文档)
      • 命名空间限定的元素信息项,其 [namespace name] 不为 "http://www.w3.org/ns/wsdl"
    2.3.2.1带有[owner元素]的name 属性信息项fault

    name 属性标识给定 interface 元素内的故障元素。

    name 属性具有以下 Infoset 属性:

    • 本地名称为 name
    • 命名空间名称无值
    • name 属性类型为 xs:NCName
    2.3.2.2 fault 元素的 element 属性

    element 属性通过 QName 引用一个元素声明组件。

    element 属性具有以下 Infoset 属性:

    • 本地名称为 element
    • 命名空间名称无值
    • element 属性类型为 xs:QName 和 xs:token 的联合,其中 xs:token 的允许值包括 #any、#none 或 #other

    2.3.3 将接口故障的 XML 表示映射到组件属性

    从故障元素信息项的XML表示(见2.3.2 接口故障组件的XML表示)映射到接口故障组件属性的方法如表2-3所示。

    表2-3. 从XML表示映射到接口故障组件属性

    属性值
    {name}一个 QName,其本地名是 name 属性信息项的实际值,命名空间名是 [父]description 元素信息项的 targetNamespace 属性的实际值,该 description 元素是[父] interface 元素的[父]。
    {message content model}如果 element 属性信息项存在且其值为一个 QName,则为 #element;否则为 element 属性信息项的实际值(若存在);否则为 #other。
    {element declaration}如果 element 属性信息项存在且其值为一个 QName,则为由 element 属性的值所解析的 Description 组件的{element declarations}属性中解析得到的 Element Declaration 组件(见 2.17 QName 解析);否则为空。如果 element 属性信息项具有值,则它必须解析为 Description 组件的{element declarations}属性中的一个 Element Declaration 组件。
    {parent}对应[父] interface 元素信息项的 Interface 组件。

    2.4 界面操作

    2.4.1 接口操作组件

    接口操作组件描述一个给定接口所支持的操作。操作是服务与其他参与交互的各方之间交换一组(普通和故障)消息的交互。特定交互中涉及的消息的顺序和基数由该操作使用的消息交换模式({message exchange pattern}属性)管理。

    消息交换模式定义消息的占位符、参与模式的参与者(即消息的源和接收器)以及参与者交换的消息的基数和顺序。通过使用该模式的操作通过消息引用({interface message references})和故障引用({interface fault references})将消息占位符与特定消息类型相关联。使用该模式的操作的服务成为该模式的参与者之一。本规范没有定义用于定义消息交换模式的机器可理解语言,也没有定义任何特定模式。配套规范[WSDL 2.0 Adjuncts]定义了一组这样的模式,并定义了任何可用于{message exchange pattern}属性值的标识 IRI。

    接口操作组件的属性如下:

    • {[name]} 必填。xs  :QName。
    • {message exchange pattern} 必需。一个 xs:anyURI,识别操作使用的消息交换模式。这个 xs:anyURI 必须是一个绝对 IRI(见[IETF RFC 3987])。
    • {interface message references} 可选。接口消息引用组件的集合,用于操作接受或发送的普通消息。
    • {interface fault references} 可选。接口故障引用组件的集合,用于操作接受或发送的故障消息。
    • {style} 可选。一组 xs:anyURIs,标识用于构造{interface message references}的{element declaration}属性的规则。(参见 2.4.1.2 操作风格)。这些 xs:anyURIs 必须是绝对 IRI (见[IETF RFC 3986])。
    • {parent} 必需。在其{interface operations}属性中包含此组件的接口组件。

    对于接口组件的{interface operations}属性中的每个接口操作组件,{name}属性必须是唯一的。请注意,这一约束由规范的 WSDL 2.0 XML 模式强制执行。

    接口操作组件由封闭接口组件的 QName 和接口操作组件自己的 QName 唯一标识。

    注意:

    尽管有一个{name}属性,但接口操作组件不能仅通过其 QName 来标识。的确,两个{name}属性值具有相同命名空间名称但本地名称不同的接口组件可以包含具有相同{name}属性值的接口操作组件。因此,接口操作组件的{name}属性不足以形成接口操作组件的唯一标识。定义了一种唯一标识组件的方法在 A.2 片段标识符。请参阅 A.2.6 接口操作组件对接口操作组件的片段标识符的定义。

    在接口扩展一个或多个其他接口的情况下,由于两个或多个接口操作组件的{name}属性值相同,则这些接口操作组件的组件模型必须相等(见 2.15 组件的等价)。如果接口操作组件等效,则它们被认为折叠成一个组件。在同一接口组件中,如果两个接口操作组件不等效,则它们的{name}属性必须不相等。

    注意,由于上述规则,如果两个{name}属性值具有相同命名空间名称的接口也有一个或多个{name}属性值相同的操作,那么只有当这些操作是相同的操作时,这两个接口才都可以成为派生接口的派生链的一部分。

    出于这个原因,如果必要,最好确保命名空间中的接口操作组件的{name}属性在命名空间内应该是唯一的,以允许这种派生发生而不会无意中出错。

    接口操作组件的{interface fault references}属性中可以有多个接口故障引用组件引用同一消息标签。在这种情况下,列出的故障类型定义了相关的备用故障消息。这允许表示与该消息相关的不止一种故障类型。

    2.4.1.1 消息交换模式

    本节更详细地描述了一些消息交换模式的方面。有关消息交换模式语义的完整讨论以及 WSDL 2.0 中预定义的消息交换模式的定义,请参阅 Web Services Description Language (WSDL) Version 2.0 Part 2:Adjuncts 规范[WSDL 2.0附录]。

    占位符消息是由 Interface Message Reference 组件描述的实际消息的模板。尽管占位符消息本身不是组件,但将其视为同时具有{message label}和{direction}属性是有用的,这些属性定义了与之对应的实际 Interface Message Reference 组件的值。占位符消息还与交换消息的某个节点相关联。此外,占位符消息可以被指定为交换中的可选消息。

    故障传播规则集指定了 Interface Operation 组件的 Interface Fault Reference 和 Interface Message Reference 组件之间的关系。Web Services Description Language (WSDL) Version 2.0 Part 2:Adjuncts 规范[WSDL 2.0附录]定义了三个故障传播规则集,我们将它们称为 fault-replaces-message、message-triggers-fault和no-faults。这三个故障传播规则集由[WSDL 2.0附录]中预定义的消息交换模式使用。其他消息交换模式可以定义额外的故障传播规则集。

    消息交换模式是服务与一个或多个其他节点之间交换一个或多个消息及其相关故障的模板,如 Interface Operation 组件所述。服务和其他节点称为交换中的参与者。更具体地说,消息交换模式由一系列占位符消息组成。消息交换模式内的每个占位符消息都由其{message label}属性唯一标识。消息交换模式本身由绝对IRI唯一标识,它用作 Interface Operation 组件的 {message exchange pattern} 属性的值,并指定其故障遵循的故障传播规则集。

    2.4.1.2 操作方式

    操作风格指定关于操作的附加信息。例如,操作风格可以为操作使用的 interface message reference 或 interface fault 组件的元素声明定义结构约束。这些额外信息绝不会影响与服务交换的消息和故障,因此在该上下文中可以安全地忽略它。但是,额外信息可以用于其他目的,例如改进的代码生成。Interface Operation 组件的{style}属性包含零个或多个标识操作风格的 IRI。Interface Operation 组件必须满足其{style}属性标识的每个操作风格的规范。如果没有 Interface Operation 组件能同时满足所有样式,则文档无效。

    如果 Interface Operation 组件的{style}属性确实有值,那么该值(一组 IRI)指定了用于定义元素声明(或定义消息和故障内容的其他属性;参见 3.2 使用其他模式语言)的规则操作使用的 Interface Message Reference 或 Interface Fault 组件。尽管给定的操作风格有能力约束操作的所有输入和输出消息和故障,但它可以选择约束任意组合,例如只约束消息或只约束输入。

    有关特定操作风格定义,请参阅 Web Services Description Language (WSDL) Version 2.0 Part 2:Adjuncts 规范[WSDL 2.0附录]。

    2.4.2 接口操作组件的XML表示

    <description>
      <interface>
        <operation
              name="xs:NCName" 
              pattern="xs:anyURI"?
              style="list of xs:anyURI"? >
          <documentation />*
          [ <input /> | <output /> | <infault /> | <outfault /> ]*
        </operation>
      </interface>
    </description>
    

    接口操作组件的 XML 表示是具有以下信息集属性的元素信息项:

    • [当地名称] operation

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • 其[attributes]中的两个或多个属性信息项如下:

      • 必需的name 属性信息项 ,如下面 2.4.2.1 名称属性信息项中所述 ,具有操作 [owner element] 。
      • 可选pattern 属性信息项,如下面2.4.2.2 模式属性信息项中所述,具有操作 [所有者元素] 。
      • 可选style 属性信息项,如下面 2.4.2.3 样式属性信息项中所述 ,具有操作 [owner element] 。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中的一个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。

      2. 以下各项中的一个或多个元素信息项(按任意顺序):

        • 以下各项中的一个或多个元素信息项(按任意顺序):

          • 零个或多个input 元素信息项(参见2.5.2 接口消息引用组件的XML表示)。
          • 零个或多个output 元素信息项(参见2.5.2 接口消息引用组件的XML表示)。
          • 零个或多个infault 元素信息项(参见2.6.2 接口故障参考的XML表示)。
          • 零个或多个outfault 元素信息项(参见2.6.2 接口故障参考的XML表示)。
        • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。

    2.4.2.1操作[所属元素]的name属性信息项

    属性name 信息项 标识给定operation 元素信息项内的给定interface 元素信息项。

    属性name 信息项具有以下 Infoset 属性:

    • [当地名称]name
    • 没有值的[命名空间名称]

    name 属性信息项的类型为 xs:NCName。

    2.4.2.2 操作[所属元素]的pattern属性信息项

    属性pattern 信息项 标识给定操作使用的消息交换模式。

    属性pattern 信息项具有以下Infoset属性:

    • [当地名称]pattern
    • 没有值的[命名空间名称]

    pattern 属性信息项的类型为 xs:anyURI。请注意,其值必须是绝对 IRI(请参阅 [ IETF RFC 3987 ])。

    2.4.2.3 操作[所属元素]的style属性信息项

    属性style 信息项 指示用于构造接口消息引用组件的{元素声明}属性的规则,该接口消息引用组件是[所有者元素]操作的{接口消息引用}属性的成员。

    属性style 信息项具有以下 Infoset 属性:

    • [当地名称]style
    • 没有值的[命名空间名称]

    style 属性信息项的类型为xs:anyURI 的列表。请注意,其值必须是绝对 IRI(请参阅 [ IETF RFC 3987 ])。

    2.4.3 将接口操作的 XML 表示映射到组件属性

    operation 从元素信息项的 XML 表示 (参见 2.4.2 接口操作组件的 XML 表示)到接口操作组件的属性(参见 2.4.1 接口操作组件)的映射如表 2-4所示。

    属性值
    {name}元素信息项 name 属性的本地名称,以及父 description 元素信息项 targetNamespace 属性的值所组成的 QName
    {message exchange pattern}pattern 属性信息项的值;若不存在则默认为'http://www.w3.org/ns/wsdl/in-out'
    {interface message references}对应于[children]中的 input 和 output 元素信息项的消息引用集合
    {interface fault references}对应于[children]中的 infault 和 outfault 元素信息项的接口故障引用集合
    {style}style 属性信息项的值集合,若不存在则为父 interface 元素信息项的 styleDefault 属性值集合,若也不存在则为空集合
    {parent}[parent]中的 interface 元素信息项对应的接口组件

    2.5 接口消息参考

    2.5.1 接口消息参考组件

    接口消息引用组件定义了操作中交换的消息的内容或有效载荷。默认情况下,消息内容由诸如 XML Schema 之类的基于 XML 的类型系统定义。也可以通过 WSDL 2.0 类型系统扩展机制使用其他类型系统。

    消息交换模式定义了参与模式的一组占位符消息,并在模式内为它们分配唯一的消息标签(例如“In”、“Out”)。接口消息引用组件的目的是将实际的消息元素( XML元素声明或其他声明(参见 3.2 使用其他模式语言))与消息模式中标识的消息相关联,即消息的消息标签。以后,当实例化消息交换模式时,对应于该特定标签的消息将遵循接口消息引用组件所做的元素分配。

    接口消息引用组件的属性如下:

    • {message label} 必需。一个 xs:NCName。该属性标识此消息在接口操作组件中所包含的{message exchange pattern}中的作用。该属性的值必须与消息交换模式定义的占位符消息的名称匹配。

    • {direction} 必需。一个值为 in 或 out 的 xs:token,分别表示消息是进入服务还是从服务离开。方向必须与{message exchange pattern}中被 {message label} 属性标识的消息的方向相同。

    • {message content model} 必需。一个值为 #any、#none、#other 或 #element 的 xs:token。#any 表示消息内容为任意单个元素。#none 表示没有消息内容。#other 表示消息内容由引用非XML扩展类型系统中的声明的其他某个扩展属性描述。#element 表示消息由 xs:element declaration 属性引用的全局元素声明所描述的单个元素组成。此属性仅在使用基于XML的数据模型描述消息时使用。

    • {element declaration} 可选。对描述组件的 element declarations 属性中的元素声明组件的引用。此元素表示消息的内容或“有效载荷”。当 {message content model} 属性值为 #any 或 #none 时,{element declaration} 属性必须为空。

    • {parent} 必需。包含此组件的接口操作组件,在其 interface message references 属性中。

    对于接口操作组件的 interface message references 属性中的每个接口消息引用组件,其 {message label} 属性必须唯一。

    如果使用的不是基于 XML Infoset 的类型系统(如 3.2 中所考虑的),则需要向接口消息引用组件添加更多属性(以及对其 XML 表示形式的扩展属性),以允许将这种消息类型与消息引用相关联。

    2.5.2 接口消息引用组件的XML表示

    <description>
      <interface>
        <operation>
          <input
                messageLabel="xs:NCName"?
                element="union of xs:QName, xs:token"? >
            <documentation />*
          </input>
          <output
                messageLabel="xs:NCName"?
                element="union of xs:QName, xs:token"? >
            <documentation />*
          </output>
        </operation>
      </interface>
    </description>
    

    接口消息引用组件的 XML 表示是 具有以下信息集属性的元素信息项:

    • [本地名称]input或output

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • 其[attributes]中的零个或多个属性信息项如下:

      • 可选messageLabel 属性信息项,如下 2.5.2.1 条所述,与 input 或 output [所有者元素]的 messageLabel 属性信息项。
      • 可选element *属性信息项,如下 2.5.2.2 条所述,与 input 或 output [所有者元素]的 element 属性信息项。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子元素]中的零个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。
      2. 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    2.5.2.1 带有 或[owner元素]的messageLabel 属性信息项input``output

    属性messageLabel 信息项标识该消息在给定operation 元素信息项的消息交换模式中的角色。

    属性messageLabel 信息项具有以下Infoset属性:

    • [当地名称]messageLabel
    • 没有值的[命名空间名称]

    messageLabel 属性信息项的类型为xs:NCName。

    2.5.2.2 带有 或[owner元素]的element 属性信息项input``output

    属性element 信息项具有以下Infoset属性:

    • 的[本地名称] element。
    • 没有值的[命名空间名称]。

    element 属性信息项的类型是xs:QName和xs:token的并集 ,其中允许的标记值为 #any、 #none或 #other。

    2.5.3 将接口消息引用的 XML 表示映射到组件属性

    从接口消息引用元素信息项的 XML 表示(参见2.5.2 接口消息引用组件的 XML 表示)到接口消息引用组件的属性(参见2.5.1 接口消息引用组件)的映射如下所述表 2-5中 并使用以下定义。

    将元素信息项的消息交换模式定义为父接口操作组件的{message exchange pattern}。

    如果本地名称是 input,则将元素信息项的消息方向定义为 in;如果本地名称是 output,则定义为 out。

    注意,如果消息交换模式具有多个{ direction }等于消息方向的占位符消息,则接口消息引用元素信息项的messageLabel 属性信息项必须存在。**

    如果 接口消息引用元素信息项的messageLabel 属性信息项存在,则其实际值必须与某些占位符消息的{消息标签}匹配,其中{方向}等于消息方向。†**

    如果 接口消息参考元素信息项的messageLabel 属性信息项不存在,则必须有一个唯一的占位符消息,其{ direction }等于消息方向。†**

    将接口消息引用元素信息项的有效消息标签定义为,如果messageLabel属性信息项存在则为其实际值,如果属性信息项不存在则为方向等于消息方向的唯一占位符消息的{message label}。

    如果本地名称是input,那么消息交换模式必须至少有一个方向为“In”的占位符消息。†

    如果本地名称是output,则消息交换模式必须至少有一个方向为“Out”的占位符消息。†

    如果本地名称是infault,则消息交换模式必须支持“In”方向上的至少一个故障。†

    如果本地名称是outfault,则消息交换模式必须支持“Out”方向上的至少一个故障。†

    财产价值
    {message label}有效的消息标签。
    {direction}消息方向。
    {message content model}如果element 属性信息项存在且其值为 QName,则 #element;element 否则为属性信息项的实际值 ,如果有的话;否则 #other。
    {element declaration}如果 element 属性信息项存在且其值为 QName,则是由 element 属性信息项的值解析到的说明组件(见2.17 QName 解析)的 {element declarations} 属性中的元素声明组件;否则为空。如果 element 属性信息项有值,则它必须解析为说明组件的 {element declarations} 属性中的元素声明组件
    {parent}对应于[parent]中的 interface 元素信息项的接口操作组件

    2.6 接口故障参考

    2.6.1 接口故障参考组件

    接口故障引用组件将接口故障组件指定的已定义类型 与操作中交换的故障消息相关联。

    消息交换模式定义了一组参与该模式的占位符消息,并为它们分配模式内唯一的消息标签(例如“In”、“Out”)。接口故障引用组件的目的 是将实际消息类型(XML 元素声明或消息内容的其他声明(请参阅3.2 使用其他模式语言),如接口故障组件指定的 )与发生在接口故障组件中的故障消息相关联。图案。为了识别它所描述的故障消息,接口故障参考 组件使用与故障相关的消息的消息标签作为关键字。

    如前所述,配套规范 [ WSDL 2.0 Adjuncts ] 定义了给定消息交换模式可以使用的几个故障传播规则集。 对于规则集 failure-replaces-message,与故障相关的消息标识将出现所声明的故障消息的消息。因此,故障消息将沿着与其在模式中替换的消息相同的方向传播。 对于规则集 message-triggers-fault,与故障相关的消息标识在其后可能发生指示的故障的消息,其方向与所引用的消息相反。也就是说,故障消息将以与消息交换模式中随后出现的消息相反的方向传播。

    接口故障引用组件的属性如下:

    • {interface fault} 必需。接口操作组件的{interface faults}属性中的接口故障组件,或它直接或间接扩展的接口组件。因此,标识接口故障组件间接定义了故障消息的实际内容或有效负载。

    • {message label} 必需。一个 xs:NCName。该属性在其所包含的接口操作组件的{message exchange pattern}属性中定义的消息中标识与此故障相关的消息。该属性的值必须匹配消息交换模式定义的占位符消息的名称。

    • {direction} 必需。一个值为 in 或 out 的 xs:token,指示故障是进入服务还是从服务发出。该方向必须与操作的消息交换模式中使用的故障传播规则集一致。例如,如果使用 fault-replaces-message 规则集,则引用传出消息的故障应该有一个 out 的{direction}属性值。另一方面,如果使用 message-triggers-fault 规则集,则引用传出消息的故障应该有一个 in 的{direction}属性值,因为故障的传播方向与消息的相反。

    • {parent} 必需。包含此组件的接口操作组件,在其{interface fault references}属性中。

    对于接口操作组件的{interface fault references}属性中的每个接口故障引用组件,其{interface fault}和{message label}属性的组合必须是唯一的。

    2.6.2 接口故障参考的XML表示

    <description>
      <interface>
        <operation>
          <infault
                ref="xs:QName"
                messageLabel="xs:NCName"? >
            <documentation />*
          </infault>*
          <outfault
                ref="xs:QName"
                messageLabel="xs:NCName"? >
            <documentation />*
          </outfault>*
        </operation>
      </interface>
    </description>
    

    接口故障参考组件的 XML 表示 是具有以下信息集属性的元素信息项:

    • 值为 infault 或 outfault 的[本地名称]

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • [attributes]中的一个或多个属性信息项如下:

      • 必需的ref 属性信息项 ,如下面2.6.2.1 ref 属性信息项中所述,具有 infault 或 outfault [owner element] 。
      • 可选messageLabel 属性信息项,如下面2.6.2.2 messageLabel 属性信息项中所述,具有 infault 或 outfault [owner element] 。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中的零个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。
      2. 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    2.6.2.1 带有 , 或[owner 元素] 的ref 属性信息项infault``outfault

    属性ref 信息项是指故障分量。

    属性ref 信息项具有以下Infoset属性:

    • [当地名称]ref
    • 没有值的[命名空间名称]

    ref 属性信息项的类型为xs:QName。

    2.6.2.2 带有 , 或[owner 元素] 的messageLabel 属性信息项infault``outfault

    属性messageLabel 信息项标识 与该故障相关联的给定operation 元素信息项的消息交换模式中的消息。

    属性messageLabel 信息项具有以下Infoset属性:

    • [当地名称]messageLabel
    • 没有值的[命名空间名称]

    messageLabel 属性信息项的类型为xs:NCName。

    如果接口操作组件的{消息交换模式}中有多个该方向的故障,则 messageLabel 属性信息项必须出现在给定方向的接口故障引用组件的 XML 表示中。† 请回想故障传播规则集指定了故障与消息之间的关系。例如,故障替换消息规则集指定故障具有与消息相同的方向,而消息触发故障规则集指定故障具有与消息相反的方向。

    2.6.3 将接口故障引用的 XML 表示形式映射到组件属性

    从消息引用元素信息项的 XML 表示 (参见2.6.2 接口故障引用的 XML 表示)到接口故障引用组件的属性(参见2.6.1 接口故障引用组件)的映射如下表所示2-6并使用下面的定义。

    定义元素信息项的消息交换模式为父接口操作组件的 {message exchange pattern}。

    如果本地名称是 infault,则定义元素信息项的错误方向为 in;如果本地名称是 outfault,则定义为 out。

    定义元素信息项的消息方向为与错误相关的占位符消息的{direction},由消息交换模式的错误传播规则集指定。

    如果消息交换模式具有多个{ direction }等于消息方向的占位符消息,则接口故障参考元素信息项的属性 messageLabel 信息项必须存在。 †**

    如果 接口故障参考元素信息项的messageLabel 属性信息项存在,则其实际值必须与某些占位符消息的{消息标签}匹配,其中{方向}等于消息方向。†**

    如果 接口故障参考元素信息项的messageLabel 属性信息项不存在,则必须有一个唯一的占位符消息,其{ direction }等于消息方向。†**

    将接口故障参考元素信息项的 有效消息标签定义为属性信息项的实际值(如果存在),或者是唯一占位符消息的{ message label },其{ direction }等于消息方向如果属性信息项不存在。messageLabel**

    财产价值
    {interface fault}父接口组件的{interface faults}属性中与ref属性信息项的实际值匹配的接口错误组件,或它直接或间接扩展的接口组件
    {message label}有效的消息标签。
    {direction}故障方向。
    {parent}[parent] 中的 interface 元素信息项对应的接口操作组件

    2.7 绑定

    2.7.1 绑定组件

    绑定组件描述了具体的消息格式和传输协议,可用于定义端点(参见2.13 端点)。也就是说,绑定组件定义了访问服务所需的实现细节。

    绑定组件可用于以可重用的方式为任何接口或专门为给定接口描述此类信息。此外,除了跨接口的所有操作之外,绑定信息还可以在接口内的每个操作的基础上指定(参见2.9.1 绑定操作组件)。

    如果 Binding 组件指定任何特定于操作的绑定详细信息(通过包括 Binding Operation 组件)或任何故障绑定详细信息(通过包括 Binding Failure 组件),则它必须指定 Binding 组件应用于哪个接口,以指示该 Binding 组件应用到哪个接口。操作来自。†

    相反,省略任何特定于操作的绑定细节和任何故障绑定细节的绑定组件可以省略指定接口。不指定接口的绑定组件可以用于为具有不同接口的服务组件指定与操作无关的绑定细节。也就是说,此类 Binding 组件可跨一个或多个接口重用。

    本规范中没有给出具体的绑定细节。配套规范 Web 服务描述语言 (WSDL) 版本 2.0 第 2 部分:附件[ [WSDL 2.0 附件] 为 SOAP 1.2  SOAP 1.2 第 1 部分:消息传递框架(第二版) ] 和 HTTP [ IETF RFC 2616 ]定义了此类绑定。其他规范可以定义额外的绑定细节。此类规范预计会使用附加属性来注释 Binding 组件(及其子组件),并指定从 XML 表示形式到这些属性的映射。

    为接口组件定义绑定的绑定组件必须为该接口组件的所有操作定义绑定。†绑定可以通过默认规则发生,该规则允许为所有操作和故障指定默认绑定(例如,参见 [ WSDL 2.0 Adjuncts ]),或者通过为接口组件的每个接口操作和 接口故障组件定义绑定来发生。

    类似地,每当可重用的Binding 组件(即不指定Interface组件的组件)应用于Endpoint组件上下文中的特定Interface组件 (请参阅2.13.1 Endpoint 组件)时,Binding组件必须为每个组件定义绑定。接口组件的接口操作和接口故障组件,通过绑定组件本身定义的属性和特定于其绑定类型的默认绑定规则的组合。†****

    为接口组件定义绑定的绑定组件必须为该接口组件中的任何操作引用的该接口组件的所有故障定义绑定。†对于操作的情况,可以通过默认规则来定义绑定。请注意,只有操作实际引用的故障才需要具有绑定。

    绑定是命名构造,可以通过 QName 引用(请参阅2.17 QName 解析)。例如,端点组件以这种方式引用绑定。

    Binding 组件的属性如下:

    • {name} 必填。xs  :QName。
    • {interface} 可选。一个Interface组件,指示为其指定绑定信息的接口。
    • {type} 必需。xs  :anyURI。 此 xs:anyURI必须是 [ IETF RFC 3987 ]定义的绝对 IRI 。†此 IRI 的值指示此绑定组件中包含哪种具体绑定详细信息 。定义此类具体绑定细节的规范(例如 [ WSDL 2.0 Adjuncts ])必须为此属性指定适当的值。该属性的值可以是定义这些具体绑定细节的扩展元素或属性的命名空间名称。
    • {binding faults} 可选。一组绑定错误 组件。
    • {binding operations} 可选。一组绑定操作组件。

    对于 描述组件的 { bindings } 属性 中的每个 Binding 组件, { name } 属性必须是唯一的。†

    2.7.2 绑定组件的XML表示

    <description>
      <binding
            name="xs:NCName" 
            interface="xs:QName"?
            type="xs:anyURI" >
        <documentation />*
        [ <fault /> | <operation /> ]*
      </binding>
    </description>
    

    Binding组件的 XML 表示形式是具有以下 Infoset 属性的元素信息项:

    • [当地名称]binding

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • 其[attributes]中的两个或多个属性信息项如下:

      • 必需的name 属性信息项 ,如下面 2.7.2.1 名称属性信息项中所述 ,具有绑定 [owner element] 。
      • 如下在2.7.2.2 具有绑定 [owner element] 的接口属性信息项中描述的可选interface 属性信息项。
      • 如下在2.7.2.3 中描述的具有绑定 [owner element] 的类型属性信息项中的必需type 属性信息项。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[children]中有零个或多个元素信息item,按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。

      2. 以下各项中的零个或多个元素信息项(按任何顺序):

        • 零个或多个fault 元素信息 item(参见2.8.2 绑定错误组件的 XML 表示)。
        • 零个或多个operation 元素信息 item(参见2.9.2 绑定操作组件的 XML 表示)。
        • [命名空间名称]不是"http://www.w3.org/ns/wsdl"的命名空间限定符元素信息项。这些元素信息项被认为是绑定扩展元素(参见 2.7.2.4 绑定扩展元素)。
    2.7.2.1带有 [owner元素]name 的属性信息项binding

    属性name 信息项 与元素信息项的targetNamespace 属性信息项一起形成绑定的QName。description**

    属性name 信息项具有以下Infoset属性:

    • [当地名称]name
    • 没有值的[命名空间名称]

    name 属性信息项的类型为 xs:NCName。

    2.7.2.2带有 [owner元素]interface 的属性信息项binding

    属性interface 信息项 通过QName指代接口组件。

    属性interface 信息项 具有以下Infoset属性:

    • [当地名称]interface
    • 没有值的[命名空间名称]

    interface 属性信息项的类型为 xs:QName。

    2.7.2.3带有 [owner元素]type 的属性信息项binding

    属性type 信息项标识Binding组件 中包含的绑定细节的种类。

    属性type 信息项具有以下Infoset属性:

    • [当地名称]type
    • 没有值的[命名空间名称]

    type 属性信息项的类型为 xs:anyURI。

    2.7.2.4 绑定扩展元素

    绑定扩展元素用于提供特定于特定绑定的信息。这种元素信息项的语义由那些元素信息项的规范定义 。此类规范预计会使用附加属性来注释 Binding 组件,并指定从 XML 表示形式到这些属性的映射。

    2.7.3 将 Binding 的 XML 表示形式映射到组件属性

    binding 从元素信息项的 XML 表示 (参见 2.7.2 绑定组件的 XML 表示)到绑定组件的属性(参见2.7.1 绑定组件)的映射如表 2-7所示。

    属性值
    nameQName,其本地名称是name 属性信息项的实际值,其命名空间名称是[parent] 元素信息项的targetNamespace 属性信息项的实际值 。description**
    interface如果interface 属性信息项存在,interface 属性对应接口组件 resolved by 接口属性信息项的实际值(参见 2.17中的 QName resolution)。
    typetype 属性信息项的实际值 。
    binding faults如果存在 fault 元素信息项,binding faults 属性是对应 fault 元素信息项的绑定故障组件集合。
    binding operations如果存在 operation 元素信息项,binding operations 属性是对应 operation 元素信息项的绑定操作组件集合。

    2.8 绑定错误

    2.8.1 绑定错误组件

    绑定故障组件描述了接口内特定故障与特定具体消息格式的具体绑定。接口的特定故障由其 { name } 属性唯一标识。

    请注意,错误本身不会发生 - 它作为接口操作组件(及其绑定对应组件绑定操作组件)定义的消息交换的一部分发生。因此,在绑定故障组件中指定的故障绑定信息描述了操作的消息交换内发生的故障将如何被格式化并在传输中携带。

    [BindingFault] 组件的属性如下:

    • {[interface fault]} 必需。由父 Binding 组件的 { interface } 属性标识的 Interface 组件的 { interface failures } 属性中的 Interface Failure组件,或者 该Interface组件直接或间接扩展的Interface组件。这是为其指定绑定信息的接口故障组件。
    • {parent} 必需。在其 {绑定错误} 属性中包含此组件的绑定组件。

    对于 Binding组件的{ Binding Failures } 属性中的每个 Binding Failure 组件, { Interface Failure } 属性必须是唯一的。† 也就是说,不能在给定的 Binding 组件中为同一故障定义多个绑定。

    2.8.2 绑定错误组件的 XML 表示

    <description>
      <binding>
        <fault
              ref="xs:QName" >
          <documentation />*
        </fault>
      </binding>
    </description>
    

    绑定错误组件的 XML 表示是 具有以下信息集属性的元素信息项:

    • [当地名称]fault

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • [attributes]中的一个或多个属性信息项如下:

      • 必需的ref 属性信息项 ,如下面2.8.2.1 ref 属性信息项中所述,具有错误 [owner element] 。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中的零个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。
      2. 零个或多个 [命名空间名称] 不是 "http://www.w3.org/ns/wsdl" 的命名空间限定的元素信息项。这些元素信息项被视为绑定故障扩展元素,如下面 2.8.2.2 所述。
    2.8.2.1带有[owner元素]ref 的属性信息项fault

    属性ref 信息项具有以下Infoset属性:

    • [当地名称]ref
    • 没有值的[命名空间名称]

    ref 属性信息项的类型为 xs:QName。

    2.8.2.2 绑定故障扩展元素

    绑定故障扩展元素用于提供特定于绑定中特定故障的信息。这种元素信息项的语义 由那些元素信息项的规范定义。此类规范预计会使用附加属性来注释Binding Failure组件,并指定从 XML 表示到这些属性的映射。

    2.8.3 将绑定错误的 XML 表示映射到组件属性

    fault 从元素信息项的 XML 表示 (请参阅 2.8.2 绑定错误组件的 XML 表示)到绑定错误组件的属性(请参阅 2.8.1 绑定错误组件)的映射如表 2-8所示。

    财产价值
    {接口故障}接口故障组件对应ref 属性信息项的实际值。
    {父级}[parent] 中元素信息项对应的 Binding组件。

    2.9 绑定操作

    2.9.1 绑定操作组件

    绑定操作 组件描述与给定端点的特定接口操作相关联的具体消息格式和协议交互。接口的特定操作由其 { name } 属性唯一标识。

    绑定操作组件的属性如下:

    • {interface operation} 必填。由[parent]绑定组件的 { interface } 属性标识的接口组件的{ interface Operations } 属性中的接口操作组件,或者该接口组件直接或间接扩展的接口组件。这是为其指定绑定信息的接口操作组件。
    • {binding message references} 可选。一组绑定消息参考 组件。
    • {binding fault references} 可选。一组绑定错误参考 组件。
    • {parent} 必需。在其 {绑定操作} 属性中包含此组件的绑定组件 。

    对于绑定组件的{绑定操作} 属性中的每个绑定操作组件,{接口操作} 属性必须是唯一的。† 也就是说,不能在给定的Binding 组件中为同一操作定义多个绑定。

    2.9.2 绑定操作组件的 XML 表示

    <description> 
      <binding>
        <operation
              ref="xs:QName">
          <documentation />*
          [ <input /> | <output /> | <infault /> | <outfault /> ]* 
        </operation>
      </binding>
    </description>
    

    绑定操作组件的 XML 表示是 具有以下信息集属性的元素信息项:

    • [当地名称]operation

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • [attributes]中的一个或多个属性信息项如下:

      • 必需的ref 属性信息项 ,如下面 2.9.2.1 ref 属性信息项中所述,具有操作 [owner element] 。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[children]中有零个或多个元素信息 item,按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。

      2. 以下各项中的零个或多个元素信息项(按任何顺序):

        • 零个或多个input 元素信息项(参见2.10绑定消息参考)
        • 零个或多个output 元素信息项(参见2.10绑定消息参考)
        • 零个或多个infault 元素信息项(参见2.11绑定故障参考)
        • 零个或多个outfault 元素信息项(参见2.11绑定故障参考)
        • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“ http://www.w3.org/ns/wsdl ”。这样的元素信息项被认为是如下所述的绑定操作扩展元素(参见 2.9.2.2 绑定操作扩展元素)。
    2.9.2.1带有 [owner元素]ref 的属性信息项operation

    属性ref 信息项具有以下 Infoset 属性:

    • [当地名称]ref
    • 没有值的[命名空间名称]

    ref 属性信息项的类型为 xs:QName。

    2.9.2.2 绑定操作扩展元素

    绑定操作扩展元素用于提供特定于绑定中特定操作的信息。这种元素信息项的语义由那些元素信息项的规范定义。此类规范预计会使用附加属性来注释绑定操作组件,并指定从 XML 表示形式到这些属性的映射。

    2.9.3 将绑定操作的 XML 表示形式映射到组件属性

    operation 从元素信息项的XML 表示 (参见 2.9.2 绑定操作组件的XML 表示)到绑定操作组件的属性的映射如表2-9所示。

    财产价值
    {interface operation}该接口操作组件对应ref 属性信息项的实际值。
    {binding message references}与 [children] 中的和 元素信息项 对应的绑定消息引用组件的集合(如果有)。input``output
    {binding fault references}与 [children] 中的和 元素信息项 对应的绑定错误引用组件的集合(如果有)。infault``outfault
    {parent}[parent]中元素信息项对应的 Binding组件。binding

    2.10 绑定消息参考

    2.10.1 绑定消息参考组件

    绑定消息参考组件描述了参与操作的特定消息到特定具体消息格式的具体绑定。

    Binding Message Reference 组件的属性 如下:

    • {interface message reference} 必填。接口消息引用组件位于由包含绑定操作组件绑定的接口操作组件的 { 接口消息引用} 属性中。
    • {parent} 必需。绑定 操作组件在其 {绑定消息引用} 属性 中包含此组件。

    对于绑定操作组件的{绑定消息引用}属性中的每个绑定消息引用 组件,{接口消息引用}属性必须是唯一的。† 也就是说,同一个消息不能在同一个操作中绑定两次。

    2.10.2 绑定消息引用组件的 XML 表示

    <description>
      <binding>
        <operation>
          <input
                messageLabel="xs:NCName"? >
            <documentation />* 
          </input>
          <output 
                messageLabel="xs:NCName"? >
            <documentation />*
          </output>
        </operation>
      </binding>
    </description>
    

    绑定消息引用组件的 XML 表示形式 是具有以下信息集属性的元素信息项:

    • input或的[本地名称] output。

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    • 其[attributes]中的零个或多个属性信息项如下:

      • 可选messageLabel 属性信息项,如下面2.10.2.1 messageLabel 属性信息项中所述,具有输入或输出 [所有者元素] 。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中的零个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。
      2. 零个或多个命名空间限定的元素信息项,其[命名空间名称]不是"http://www.w3.org/ns/wsdl"。这些元素信息项被视为绑定消息引用扩展元素,如下 2.10.2.2 节所述。
    2.10.2.1 带有 或[owner元素]的messageLabel 属性信息项input``output

    属性messageLabel 信息项具有以下 Infoset 属性:

    • [本地名称] messageLabel。
    • 没有值的[命名空间名称]。

    messageLabel 属性信息项的类型为 xs:NCName。

    2.10.2.2 绑定消息参考扩展元素

    绑定消息参考扩展元素用于提供操作中特定消息的特定信息。这种元素信息项的语义由那些元素信息项的规范定义。此类规范预计会使用附加属性来注释绑定消息引用 组件,并指定从 XML 表示到这些属性的映射。

    2.10.3 将绑定消息引用的 XML 表示形式映射到组件属性

    将绑定元素信息项(见2.10.2 绑定消息引用组件的 XML 表示)的XML表示映射到绑定消息引用组件的属性如表2-10所述,并使用以下定义。

    将元素信息项的消息交换模式定义为正在绑定的接口操作组件的{消息交换模式}。

    如果其本地名称为 input,则将元素信息项的消息方向定义为 in;如果其本地名称为 output,则定义为 out。

    注意,如果消息交换模式具有多个{ direction }等于消息方向的占位符消息,则必须存在绑定消息引用元素信息项的messageLabel *属性信息项。

    如果 绑定消息引用元素信息项的messageLabel 属性信息项存在,则其实际值必须与某些占位符消息的{消息标签}匹配,其中{方向}等于消息方向。†

    如果 绑定消息引用元素信息项的messageLabel 属性信息项不存在,则必须有一个唯一的占位符消息,其{ direction }等于消息方向。†

    将绑定消息引用元素信息项的 有效消息标签定义为属性信息项的实际值(如果存在),或者是唯一占位符消息的{ message label },其中 { direction } 等于消息方向(如果)属性信息项不存在。messageLabel**

    属性值
    {interface message reference}接口操作组件的{接口消息引用}中的接口消息引用组件与等于有效消息标签的{消息标签}绑定。
    {parent}[parent]中元素信息项对应的Binding Operation组件。operation**

    2.11 绑定故障参考

    2.11.1 绑定故障参考组件

    绑定故障参考组件描述了参与操作的特定故障到特定具体消息格式的具体绑定。

    绑定错误引用组件的属性 如下:

    • {[interface fault reference]()} 必需。接口故障引用 组件属于由父绑定操作组件绑定的接口操作组件的 { 接口故障引用} 属性中的组件。
    • {parent} 必需。绑定 操作组件在其 {绑定错误引用} 属性 中包含此组件。

    对于绑定操作组件的 {绑定错误引用} 属性中的每个绑定错误引用组件, {接口错误引用} 属性必须是唯一的。† 即,同一故障不能在同一操作中绑定两次。

    2.11.2 绑定错误引用组件的 XML 表示

    <description>
      <binding>
        <operation>
          <infault
                ref="xs:QName"
                messageLabel="xs:NCName"?>
            <documentation />*
          </infault>
          <outfault
                ref="xs:QName"
                messageLabel="xs:NCName"?>
            <documentation />*
          </outfault>
        </operation>
      </binding>
    </description>
    

    绑定错误引用组件的 XML 表示 是具有以下信息集属性的元素信息项:

    • infault或 [本地名称] outfault。

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    • [attributes]中的一个或多个属性信息项如下:

      • 必需的ref 属性信息项,如下面2.11.2.1 ref 属性信息项 中所述,具有 infault 或 outfault [owner element] 。

        可选messageLabel 属性信息项,如下面2.11.2.2 messageLabel 属性信息项中所述,具有 infault 或 outfault [owner element] 。

      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。

    • 其[子项]中的零个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。
      2. 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。这样的*元素信息项*被认为是如下所述的绑定故障参考扩展元素(参见[**2.11.2.3 绑定故障参考扩展元素**](https://www.w3.org/TR/wsdl/#Binding_Fault_Reference_extension_elements))。
    2.11.2.1 带有 或[owner元素]的ref 属性信息项infault``outfault

    属性ref 信息项具有以下Infoset属性:

    • 的[本地名称] ref。
    • 没有值的[命名空间名称]。

    ref 属性信息项的类型为 xs:QName。

    2.11.2.2 带有 或[owner元素]的messageLabel 属性信息项infault``outfault

    属性messageLabel 信息项具有以下Infoset属性:

    • 的[本地名称] messageLabel。
    • 没有值的[命名空间名称]。

    messageLabel 属性信息项的类型为 xs:NCName。

    2.11.2.3 绑定故障参考扩展元素

    绑定故障参考扩展元素用于提供操作中特定故障的特定信息。这种元素信息项的语义由那些元素信息项的规范定义。此类规范预计会使用附加属性来注释绑定错误引用 组件,并指定从 XML 表示到这些属性的映射。

    2.11.3 将绑定错误引用的 XML 表示形式映射到组件属性

    binding 从元素信息项的 XML 表示 (请参阅 2.11.2 绑定错误引用组件的 XML 表示)到绑定错误引用组件的属性的映射 如表 2-11中所述,并使用以下定义。

    定义元素信息项的消息交换模式为所绑定的接口操作组件的{消息交换模式} 。

    如果元素的本地名称为 infault,则将故障方向定义为 in;如果本地名称为 outfault,则定义为 out

    将元素信息项的消息方向定义为与由消息交换模式的故障传播规则集指定的故障关联的占位符消息的{方向}。

    如果消息交换模式具有多个{ direction }等于消息方向的占位符消息,则绑定错误引用元素信息项的属性 messageLabel 信息项必须存在。 †

    如果 存在绑定错误引用元素信息项的messageLabel 属性信息项,则其实际值必须与某些占位符消息的{消息标签}匹配,其中{方向}等于消息方向。†

    如果属性存在,元素的有效消息标签为属性的实际值;如果不存在,则为 {方向} 等于消息方向的唯一占位符消息的 {消息标签}

    将绑定错误引用元素信息项的 有效消息标签定义为属性信息项的实际值(如果存在),或者是唯一占位符消息的{ message label },其中 { direction } 等于消息方向(如果)属性信息项不存在。messageLabel

    接口操作中必须有一个接口故障引用组件,其 {消息标签} 等于有效消息标签,且 {接口故障} 等于一个接口故障组件,其 {名称} 等于 ref 属性的实际值

    属性值
    {interface fault reference}接口操作的 {接口故障引用}中的接口故障引用组件与等于有效消息标签的{消息标签}绑定,并与等于有效消息标签的{接口故障}绑定,其{名称}等于实际消息标签的接口故障组件属性信息项的值。ref**
    {parent}[parent]中元素信息项对应的Binding Operation组件。operation**

    2.12 服务

    2.12.1 服务组件

    服务组件描述了一组端点(参见2.13 端点),在这些端点上提供了服务的特定部署实现。因此,端点实际上是提供服务的替代位置。

    服务是命名构造,可以通过 QName 引用(请参阅2.17 QName 解析)。

    Service 组件的属性如下:

    • {name} 必填。xs  :QName。
    • {interface} 必需。接口组件。
    • {endpoints} 必需。端点组件的非空集。

    对于 描述组件的 { services } 属性 中的每个服务组件, { name } 属性必须是唯一的。†

    2.12.2 服务组件的XML表示

    <description>
      <service 
            name="xs:NCName"
            interface="xs:QName">
        <documentation />* 
        <endpoint />+
      </service>
    </description>
    

    服务组件的 XML 表示是具有以下信息集属性的元素信息项:

    • [当地名称] service

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]

    • 其[attributes]中的两个或多个属性信息项如下:

      • 必需的name 属性信息项,如下面2.12.2.1 具有服务[所有者元素]的名称属性信息项 中所述。
      • 必需的interface 属性信息项如下面2.12.2.2中描述的将属性信息项与服务[所有者元素]接口。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中的一个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。

      2. 以下各项中的一个或多个元素信息项(按任意顺序):

        • 一个或多个endpoint 元素信息项(参见2.13.2端点组件的XML表示
        • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    2.12.2.1带有 [owner元素]的name 属性信息项service

    属性name 信息项 与元素信息项的targetNamespace 属性信息项一起形成服务的QName。

    属性name 信息项具有以下Infoset属性:

    • [当地名称]name
    • 没有值的[命名空间名称]

    name 属性信息项的类型为xs:NCName。

    2.12.2.2带有 [owner元素]的interface 属性信息项service

    属性interface 信息项 标识该服务是其实例的接口。

    属性interface 信息项 具有以下Infoset属性:

    • [当地名称]interface
    • 没有值的[命名空间名称]

    interface 属性信息项的类型为xs:QName。 。

    2.12.3 将服务的 XML 表示形式映射到组件属性

    service 从元素信息项的XML表示 (参见 2.12.2服务组件的XML表示)到服务组件的属性的映射如 表2-12所示。

    属性值
    {name}QName,其本地名称是name 属性信息项的实际值,其命名空间名称是 [parent]元素信息项的targetNamespace 属性信息项的实际值。
    {interface}Interface组件通过属性信息项的实际值解析为(参见2.17 QName 解析)。
    {endpoints}[children]中元素信息项s对应的 Endpoint组件。

    2.13 端点

    2.13.1 端点组件

    端点组件定义了给定服务可用的特定端点的详细信息。

    端点组件对于给定的服务组件是本地的(参见 A.2 片段标识符)。

    由Endpoint组件的 { binding } 属性指定的 Binding 组件被认为应用于 Interface 组件,该 Interface 组件是Endpoint 的父 Service 组件的 { interface } 属性的值。根据下面给出的约束,如果此 Binding 组件具有 { interface } 属性,则其值必须是 Binding 组件所应用到的 Interface 组件。

    { address } 属性是可选的,以允许使用 IRI 以外的方式,例如 WS-Addressing Endpoint Reference [ WSA 1.0 Core ]。在某些情况下,也可能不需要地址,在这种情况下,该属性可能不存在。

    [Endpoint] 组件的属性如下:

    • {name} 必填。xs  :NCName。
    • {binding} 必需。绑定组件。
    • {address} 可选。一个 xs:anyURI。这个 xs:anyURI 必须是一个绝对 IRI,如 [IETF RFC 3987] 中定义。如果存在,该属性的值表示父 Service 组件的 {interface} 属性指示的服务通过 {binding} 属性引用的绑定在网络上的地址。注意,该属性中可能存在字符 "?" 和 "#" 与查询字符串序列化机制潜在添加的字符发生冲突,如 [WSDL 2.0 扩展] 中的“application/x-www-form-urlencoded”章节(6.8.2)所定义。
    • {parent} 必需。包含此组件的 Service 组件,在其 {endpoints} 属性中。

    对于 Service 组件的 {endpoints} 属性中的每个 Endpoint 组件,{name} 属性必须是唯一的。注意,这个约束由规范的 WSDL 2.0 XML schema 强制执行。

    对于 Service 组件的 {endpoints} 属性中的每个 Endpoint 组件,{binding} 属性必须是一个未指定 {interface} 属性的 Binding 组件,或者是一个 {interface} 属性等于 Service 组件的 {interface} 属性的 Binding 组件。

    2.13.2 端点组件的 XML 表示

    <description>
      <service> 
        <endpoint
              name="xs:NCName"
              binding="xs:QName" 
              address="xs:anyURI"? >
          <documentation />*  
        </endpoint>+
      </service>
    </description>
    

    Endpoint 组件的 XML 表示形式是具有以下 Infoset 属性的元素信息项:

    • 的[本地名称] endpoint。

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    • 其[attributes]中的两个或多个属性信息项如下:

      • 必需的name 属性信息项 ,如下面2.13.2.1 具有端点 [owner element] 的名称属性信息项中所述。
      • 必需的binding 属性信息项,如下面2.13.2.2 与端点 [owner element] 绑定属性信息项中所述。
      • 可选address 属性信息项,如下面 2.13.2.3 中所述,具有端点 [owner element] 的地址属性信息项。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中的零个或多个元素信息项按顺序如下:

      1. 零个或多个documentation 元素信息项(参见5. 文档)。
      2. 零个或多个命名空间限定的元素信息项,其 [namespace name] 不是 http://www.w3.org/ns/wsdl。这些元素信息项被视为端点扩展元素,如下所述(参见 2.13.2.4 端点扩展元素)。
    2.13.2.1带有 [owner元素]的name 属性信息项endpoint

    属性name 信息项 与元素信息项的targetNamespace 属性信息项一起形成端点的 QName

    属性name 信息项具有以下 Infoset 属性:

    • 的[本地名称] name。
    • 没有值的[命名空间名称]。

    name 属性信息项的类型为xs:NCName。

    2.13.2.2带有 [owner元素]的binding 属性信息项endpoint

    属性binding 信息项 通过 QName 引用 Binding 组件

    属性binding 信息项具有以下 Infoset 属性:

    • [当地名称]binding
    • 没有值的[命名空间名称]

    binding 属性信息项的类型为 xs:QName。

    2.13.2.3带有 [owner元素]的address 属性信息项endpoint

    属性address 信息项 指定端点的地址。

    属性address 信息项具有以下Infoset属性:

    • [当地名称]address
    • 没有值的[命名空间名称]

    address 属性信息项的类型为 xs:anyURI。

    2.13.2.4 端点扩展元素

    端点扩展元素用于提供特定于服务器中特定端点的信息。这种元素信息项的语义由那些元素信息项的规范定义。此类规范预计会使用附加属性来注释 Endpoint 组件,并指定从 XML 表示形式到这些属性的映射。

    2.13.3 将端点的 XML 表示形式映射到组件属性

    endpoint 从元素信息项的XML 表示 (参见 2.13.2 端点组件的XML 表示)到端点组件的属性的映射如 表2-13所示。

    财产价值
    {name}name 属性信息项的实际值 。
    {binding}Binding 组件通过属性信息项的实际值解析为(参见 2.17 QName 解析)。
    {address}address 属性信息项的实际值 (如果存在);否则为空。
    {parent}[parent]中元素信息项对应的 Service 组件。

    2.14 组件模型中使用的 XML Schema 1.0 简单类型

    本规范中使用的 XML Schema 1.0 简单类型[XML Schema: 数据类型]如下:

    • xs:token
    • xs:NCName
    • xs:anyURI
    • xs:QName
    • xs:boolean

    2.15 组件的等效性

    如果对于第一个组件的每个属性值,第二个组件上有一个具有等效值的对应属性,则同一类型的两个组件实例被视为等效,反之亦然。

    • 对于简单类型的值(请参阅 2.14 XML Schema 1.0 在组件模型中使用的简单类型),这意味着它们包含相同的值。例如,如果两个字符串值包含相同的 Unicode 字符序列,则它们是等效的(如 [ WWW 的字符模型] 中所述),或者如果两个布尔值包含相同的规范值 (true或false),则它们是等效的。
    • 当引用其他组件的值引用等效组件(如上面确定的)时,它们被认为是等效的。
    • 如果基于列表的值具有相同的长度并且它们在相应位置的元素是等效的,则它们被认为是等效的。
    • 最后,如果对于第一个值中的每个值,第二个值中存在等效值,则基于集合的值被认为是等效的,反之亦然。

    非字符串值、字符串集或引用的扩展属性必须描述其值的等效规则。†

    由于不同的顶级组件(例如 Interface、Binding 和 Service 需要具有不同的名称,因此可以通过简单地检查它们的 {name} 属性来确定给定类型的两个顶级组件是否等效。

    由端点的 binding 属性指定的 Binding 组件被认为应用于 Interface 组件,该组件是 Endpoint 的 paren Service 组件的 interface 属性 的值。请注意,如果此 Binding 组件具有 interface 属性,则其值必须是 Binding 组件所应用到的 Interface 组件 。

    2.16 符号空间

    该规范定义了三个符号空间,每个符号空间对应一种顶级组件类型(Interface、Binding 和 Service)。

    在符号空间内,所有限定名称(即 { name } 属性)都是唯一的。在符号空间之间,名称不必是唯一的。因此,例如,具有相同名称的绑定和接口是完全一致的。

    当 XML 模式用作 WSDL 2.0 描述的类型系统之一时,还存在其他六个符号空间,每一个符号空间对应以下各项:全局元素声明、全局属性声明、命名模型组、命名属性组、类型定义和关键约束,由 [ XML Schema: Structures ] 定义。其他类型系统可以定义附加的符号空间。

    2.17 QName解析

    在其序列化形式中,WSDL 2.0 在组件之间大量使用引用。这些引用使用被引用组件的限定名或 QName 进行。QName 是一个元组,由两个部分组成:命名空间名称和本地名称。组件的命名空间名称由 [父] 描述元素信息项的 targetNamespace 属性信息项表示。本地名称由组件的 {name} 属性表示。

    QName 引用通过在 Description 组件的适当属性中查找来解析。例如,要解析绑定的接口属性信息项引用的 QName,需要检查 Description 组件的 {interfaces} 属性。

    如果 Description 组件的适当属性中不包含所需 QName 的组件,那么该引用就是断开的引用。一个 Description 组件不能有这种断开的引用。

    2.18 比较 URI 和 IRI

    该规范使用绝对 URI 和 IRI 来标识多个组件和组件特征(例如,操作消息交换模式和样式)。当比较此类绝对 URI 和 IRI 以确定等效性时(请参阅 [**2.15 组件的等效性),必须按照 ** IETF RFC 3987 ]中的指示逐个字符进行比较。†

    3. 类型

    <description>
      <types>
        <documentation />*
        [ <xs:import namespace="xs:anyURI" schemaLocation="xs:anyURI"? /> |
          <xs:schema targetNamespace="xs:anyURI"? /> |
          other extension elements ]*
      </types>
    </description>
    

    消息和故障的内容可以使用类型系统组件来约束。这些约束基于特定的数据模型,并使用特定的模式语言来表达。

    尽管可以适应各种数据模型(通过 WSDL 2.0 扩展),但本规范仅定义了基于 XML Infoset [XML 信息集]的约束表达方式。 此外,尽管可以使用许多替代模式语言来约束 XML Infoset(只要它们支持内联或导入模式语义),但本规范仅定义了使用 XML Schema [XML 模式:结构]、[XML 模式:数据类型]。

    具体来说, Description 组件的 element statements 和 typeDefinitions 属性 是描述 Infoset* 元素信息项*的导入和内联 schema 组件的集合。

    当扩展用于启用非 Infoset 数据模型或非 Schema 约束语言时, wsdl:required属性信息项可以用于要求对该扩展的支持。

    注意:

    对 W3C XML 模式 [ XML 模式:结构]、[ XML 模式:数据类型] 的支持包含在 WSDL 2.0 文档的一致性标准中(请参阅3.1 使用 W3C XML 模式定义语言)。

    描述组件的 {element statements} 属性中包含的模式组件提供了用于接口消息引用和接口错误组件的类型系统。接口消息引用组件通过使用标准属性信息项 element 或对于模式语言不映射良好的替代属性信息项扩展来指示其结构和内容。接口错误组件的行为类似。这样的扩展应该定义它们如何引用类型系统组件。此类类型系统组件可以出现在描述组件的其他收集属性中。

    属性信息项形式的扩展可用于引用使用其他模式语言或类型系统描述的约束(类型定义或类似构造)。此类组件可能会出现在描述组件的其他集合属性中。

    元素types 信息项 包含基于 XML 信息集的数据类型定义,用于定义消息并具有以下信息集属性:

    • [本地名称] types。

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是 http://www.w3.org/ns/wsdl

    • 其 [children] 中的零个或多个元素信息 item如下:

      • 其 [children] 属性中有零个或多个documentation 元素信息项(参见 5. 文档)。

      • 以下各项中的零个或多个元素信息项(按任何顺序):

        • xs:import 元素信息项
        • xs:schema 元素信息项
        • 其他名称空间不是 http://www.w3.org/ns/wsdl 的名称空间限定元素信息项

    3.1 使用 W3C XML 模式定义语言

    XML 模式可以通过导入或内联用作模式语言。

    除非 xs:import 或 xs:schema 元素信息项存在于给定命名空间中,否则 WSDL 2.0 文档不得引用该命名空间中的 XML 模式组件,或者命名空间是 XML 模式命名空间 http://www.w3.org/2001/XMLSchema,其中包含 XML 模式第 2 版[XML 模式:数据类型]中定义的内置类型。† 也就是说,使用 xs:import 或 xs:schema 元素信息项是在 WSDL 2.0 文档中使 XML 模式组件(内置组件除外)可引用的必要条件。 内置 XML 模式数据类型内置于 WSDL 2.0 组件模型中,包含在描述组件的 {类型定义} 属性中。 引用 XML 模式命名空间的任何元素声明或类型定义组件的 WSDL 2.0 文档,除了内置的基本和派生类型,必须导入 http://www.w3.org/2001/XMLSchema。

    表 3-1总结了模式组件的可参考性。

    XML表示XML 架构组件的可参考性
    Including description描述/包括所包含的 描述组件的 {元素声明} 和 {类型定义} 属性中的 XML 架构组件是可引用的。
    Importing description描述/导入导入的描述组件中的任何 XML 架构组件 均不可引用。
    Importing XML Schema描述/类型/xs:导入导入的命名空间中的元素声明和 类型定义组件是可引用的。
    Inlined XML Schema描述/类型/xs:架构内联 XML 模式中的元素声明和 类型定义组件是可引用的。

    3.1.1 导入 XML 模式

    引入 XML Schema 使用的是 XML Schema [XML Schema: 结构]、[XML Schema: 数据类型]中定义的 xs:import 机制的语法和语义,但有以下部分定义的区别。被导入的命名空间中的 schema 组件可以通过 QName 来引用(参见 2.17 QName 解析)。只有被导入的命名空间中的组件在 WSDL 2.0 文档中可以被引用。对于被导入命名空间中的每个组件,都必须在导入此 schema 的 WSDL 文档对应的描述组件的 {element declarations} 属性或 {type definitions} 属性中出现一个对应的 Element Declaration 组件或 Type Definition 组件。† 不在被导入的命名空间中的 schema 组件不得出现在 {element declarations} 或 {type definitions} 属性中。†
    元素信息项的 子types 元素信息项用 Infoset 属性定义如下:

    • “导入”的[本地名称]。

    • “http://www.w3.org/2001/XMLSchema” 的[命名空间名称]。

    • 一个或两个属性信息项如下:

      • 如下所述的必需namespace 属性信息项。
      • 如下所述的可选schemaLocation 属性信息项。
    3.1.1.1namespace 属性信息项

    namespace 属性信息项定义了从被引用的 schema 中导入的元素声明和类型定义的命名空间。被引用的 schema 必须在其 xs:schema 元素信息项上包含一个 targetNamespace 属性信息项。† 被导入的 schema 的 xs:schema 元素信息项上的 targetNamespace 属性信息项的值必须等于导入 WSDL 2.0 文档中的导入元素信息项的命名空间的值。† 注意,WSDL 2.0 文档禁止导入一个在 xs:schema 元素信息项上没有 targetNamespace 属性信息项的 schema。这样的 schema 必须首先被 xs:include 引入到一个在 xs:schema 元素信息项上具有 targetNamespace 属性信息项的 schema 中,然后这个 schema 才可以在 WSDL 2.0 文档中被导入或内联。

    属性namespace 信息项 具有以下Infoset属性:

    • 命名空间的[本地名称]
    • 没有值的[命名空间名称]。

    namespace 属性信息项的类型为 xs:anyURI。

    3.1.1.2schemaLocation 属性信息项

    属性schemaLocation 信息项(如果存在)向 XML 模式处理器提供有关模式可能位于何处的提示。缓存和编目技术可能会提供比此提示更好的信息。属性 schemaLocation 信息项具有以下Infoset属性:

    • schemaLocation 的[本地名称]。
    • 没有值的[命名空间名称]。

    schemaLocation 属性信息项的类型为 xs:anyURI。

    每个 QName 引用都必须解析(请参阅2.17 QName 解析)。请注意,在解析模式定义的 QNames 引用时,必须通过引用的 WSDL 2.0 文档导入命名空间(请参阅 3.1 使用 W3C XML 模式定义语言)。

    3.1.2 内联 XML 模式

    内联 XML 模式使用 XML Schema [XML Schema: Structures]中定义的现有顶级 xs:schema 元素信息项。从概念上讲,内联可以简单地看作是将现有模式文档剪切并粘贴到 types 元素信息项内部的一个位置。

    在内联模式文档中定义和声明的模式组件可以通过 QName (参见 2.17 QName 解析)引用。只有在模式本身中以及通过 xs:include 包含的组件才可以引用。对于在内联模式文档中定义和声明的每个组件或通过 xs:include 包含的组件,在包含内联模式的 WSDL 文档对应的描述组件的 {element declarations} 属性或 {type definitions} 属性中必须出现相应的元素声明组件或类型定义组件。†不在内联模式文档中定义或声明的模式组件,也不通过 xs:include 包含的模式组件,都不得出现在 {element declarations} 或 {type definitions} 属性中。†

    请注意,内联模式通过其导入的命名空间中的组件xs:import不能自动从包含内联模式的 WSDL 2.0 文档中引用。如果 QName 中引用的命名空间包含在内联模式中,则可以在没有属性的情况下导入它 schemaLocation,只要内联模式已在当前组件模型中解析即可。

    请注意,在内联 XML 模式中定义的组件不会在导入(使用wsdl:import)内联该模式的 WSDL 2.0 文档的 WSDL 2.0 文档中自动引用(有关更多详细信息,请参阅4.2 导入描述)。 因此,建议将要在多个 WSDL 2.0 文档之间共享的 XML 模式文档放置在单独的 XML 模式文档中并使用 导入xs:import,而不是内联到 WSDL 2.0 文档中。

    在内联的 XML 模式内部,xs:import和 xs:include 元素信息项可以用于引用相同或其他 WSDL 2.0 文档中内联的其他 XML 模式,前提是提供适当的值,例如片段标识符(请参阅 [ XML 模式:结构] 4.3.1)为其 schemaLocation 属性信息项s进行规定。对于xs:import,schemaLocation 只要命名空间已在当前组件模型中解析,就不需要该属性。此类元素信息项的语义 仅由 XML 模式规范 [ XML 模式:结构]控制。

    WSDL 2.0 文档可以内联同一 targetNamespace. 例如,两个或多个内联模式可以具有相同的targetNamespace内容,前提是它们没有定义相同的元素或类型。WSDL 2.0 文档不得在多个内联模式中定义相同的元素或类型。†请注意,底层 XML 模式处理器负责整理一组连贯的模式组件。

    元素xs:schema 信息项具有以下 Infoset 属性:

    • 模式的[本地名称]。
    • “http://www.w3.org/2001/XMLSchema” 的[命名空间名称]。
    • XML Schema 规范中指定的 xs:schema 元素信息项的其他可选属性信息项。
    • XML Schema 规范中指定的 xs:schema 元素信息项的零个或多个子元素信息项。

    3.1.3 对元素声明和类型定义的引用

    无论是内联还是导入,模式中存在的全局元素声明都可以从接口消息引用或接口故障组件引用。同样,无论它们是内联的还是导入的,模式中存在的全局类型定义都可以从其他组件引用。

    命名的全局 xs:element 声明可以在 input、output(参见2.5.2 XML 接口消息引用组件的表示)或 fault 元素信息项(参见2.3.2 XML 接口故障组件的表示)的元素属性信息项中引用。元素声明的 QName 是从模式的 targetNamespace 和 xs:element 元素信息项的 name 属性信息项的值构造的。注意,元素属性信息项不能引用全局的 xs:simpleType 或 xs:complexType 定义,因为这些是不同的符号空间而不是全局元素声明。如果元素属性信息项错误地包含了类型定义的 QName,那么这将导致无法解析元素声明。

    3.2 使用其他模式语言

    由于期望使用单一模式语言来描述所有可能的接口消息引用和接口故障组件内容及其约束是不合理的,因此 WSDL 2.0 允许通过扩展元素指定备用模式语言。扩展元素信息项可以出现在 types 元素信息项下,以识别所使用的模式语言,并定位定义接口消息引用和接口故障组件的语法的模式实例。根据所使用的模式语言, 当且仅当模式语言可以用 XML 表示时,元素信息项可以定义为允许内联。

    替代模式语言的扩展语法规范必须包括元素信息项的声明,该元素信息项旨在作为wsdl:types 元素信息项的子项出现,它引用、命名和定位模式实例(import 元素信息项)。†如有必要,扩展规范应该定义描述 组件(和扩展属性)的附加属性以保存引用类型系统的组件。预计还将定义接口消息引用和接口故障组件的附加扩展属性,以及将这些属性的值解析为特定导入类型系统组件的机制。

    替代模式语言的扩展语法规范必须使用与 XML 模式的名称空间不同的名称空间。†替代模式语言的命名空间用于作为 元素信息项的子项的 wsdl:types 元素信息项以及出现在其他组件上的任何扩展属性信息项。 用于备用模式语言的命名空间必须是绝对 IRI。†

    有关使用其他模式语言的示例,请参阅 [WSDL 2.0 备选模式语言支持]。这些示例重用了描述组件的 {element declarations} 属性和 wsdl:input、wsdl:output 和 wsdl:fault 元素信息项的元素属性信息项。

    注意:

    本规范没有定义使用多种模式语言同时描述类型系统组件的 WSDL 2.0 文档的行为。

    3.3 描述涉及服务和端点的消息

    Web 服务可以交换引用其他 Web 服务或 Web 服务端点的消息。如果这些被引用服务或端点的接口或绑定在描述时已知,则将此信息包含在描述 Web 服务的WSDL 2.0 文档中可能很有用。WSDL 2.0 提供了两个全局属性信息项 wsdlx:interface 和 wsdlx:binding,可用于注释 XML Schema 组件或其他类型描述语言的组件。

    WSDL 2.0 定义了如何使用这些全局属性信息项来注释使用 xs:anyURI 简单类型的 XML Schema 元素信息项或属性信息项,用于对应于端点组件的{address}属性的端点地址。但是,这些全局属性信息项的使用不限于基于 xs:anyURI 的简单类型。它们可用于引用 Web 服务或 Web 服务端点的任何其他类型,例如 WS-Addressing 端点引用 [WSA 1.0核心]。有关更多信息和示例,请参阅入门指南 [WSDL 2.0 入门指南]。

    3.3.1wsdlx:interface 属性信息项

    WSDL 2.0 提供了具有以下 Infoset 属性的全局属性信息项:

    • [本地名称] interface。
    • “ http://www.w3.org/ns/wsdl-extensions ”的[命名空间名称]。

    wsdlx:interface 属性信息项的类型是一个 xs:QName,它指定了一个接口组件的{name}属性。

    3.3.2 wsdlx:binding 属性信息项

    WSDL 2.0 提供了具有以下 Infoset 属性的全局属性信息项:

    • [本地名称] binding。
    • “ http://www.w3.org/ns/wsdl-extensions ”的[命名空间名称]。

    wsdlx:binding 属性信息项的类型 是 xs:QName,它指定 Binding组件的 { name } 属性。

    3.3.3 wsdlx:interface与wsdlx:binding 一致性

    wsdlx:interface 和 wsdlx:binding 属性可单独使用也可一起使用。如果一起使用 wsdlx:interface 和 wsdlx:binding,则它们必须满足与服务组件的{interface}属性和嵌套的端点组件的{binding}属性相同的一致性规则,即绑定引用服务的接口,或者绑定不引用任何接口。

    在 xs:anyURI 上使用 wsdlx:interface 和 wsdlx:binding

    wsdlx:interface 和 wsdlx:binding 用于描述类型为 xs:anyURI 或其限制的元素信息项和属性信息项,以及包含端点的{address}属性的消息。这是通过在相应的 XML Schema 组件的 xs:element、xs:simpleType 或 xs:attribute 元素信息项中包含 wsdlx:interface 和/或 wsdlx:binding 属性信息项来实现的。

    4. 模块化 WSDL 2.0 描述

    WSDL 2.0 提供了两种模块化 WSDL 2.0 描述的机制。这些机制允许分离描述的各个组件,从而有助于使 Web 服务描述更加清晰。这种分离可以根据给定组件集的抽象级别,或者根据给定组件集所需的命名空间从属关系,或者甚至根据一些其他分组(例如应用程序适用性)来执行。

    这两种机制都在 WSDL 2.0 组件级别工作,而不是在 XML 信息集或 XML 1.0 序列化级别工作。

    4.1 引入描述

    <description>
      <include
            location="xs:anyURI" >
        <documentation />*
      </include>
    </description>
    

    WSDL 2.0include 元素信息项允许将属于同一目标名称空间的服务定义的不同组件分离为独立的 WSDL 2.0 文档。

    WSDL 2.0include 元素信息项是根据 XML 模式include 元素信息项建模的(请参阅 [ XML 模式:结构],第 4.2.3 节“对同一命名空间中的模式组件的引用”)。具体来说,它可用于包含来自 WSDL 2.0 描述的组件,这些组件与包含的描述共享目标名称空间。包含的 WSDL 2.0 文档的传递闭包中的组件成为包含的 WSDL 2.0 文档的描述组件的一部分。包含的组件可以通过 QName 引用。请注意,由于所有 WSDL 2.0 描述都有目标名称空间,因此 WSDL 2.0 中绝不会出现无名称空间包含(有时称为“变色龙包含”)。

    相互包含是一个 WSDL 2.0 文档直接包含另一个包含第一个文档的 WSDL 2.0 文档。循环包含以更大的间接性实现相同的效果(例如,A 包含 B,B 包含 C,C 包含 A)。单个 WSDL 2.0 文档的多次包含会解析为一组组件,就好像该文档仅包含一次一样。相互、多重和循环包含是明确允许的,并且不代表相同组件的多次重新定义。

    元素include 信息项 有:

    • [本地名称] include。

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    • [attributes]中的一个或多个属性信息项如下:

      • 一个 REQUIRED location 属性信息项,如下 4.1.1 中所述,其所有者元素是 include。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[子项]中零个或多个元素信息项,如下:

      • 零个或多个documentation 元素信息项(参见5. 文档)。
      • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。

    4.1.1 include 所有者元素的 location 属性信息项

    属性location 信息项 具有以下 Infoset 属性:

    • [本地名称] location。
    • 没有值的[命名空间名称]。

    属性location 信息项的类型为xs:anyURI。它的实际值是有关由包含元素信息项的targetNamespace 属性信息项标识的命名空间的一些信息的位置 。

    location 指示的 IRI 必须解析为 WSDL 2.0 文档。(参见 7. 定位 WSDL 2.0 文档)

    被引入的 WSDL 2.0 文档的 targetNamespace 属性信息项的实际值必须与引入 include 元素信息项的父级描述元素信息项的 targetNamespace 属性信息项的实际值相匹配。

    4.2 导入描述

    <description>
      <import
            namespace="xs:anyURI" location="xs:anyURI"? >
        <documentation />*
      </import>
    </description>
    

    每个顶级的 WSDL 2.0 组件都与一个命名空间相关联。每个 WSDL 2.0 文档在其 wsdl:description 元素上都携带一个 targetNamespace 属性信息项。这个属性将文档与一个目标命名空间相关联,因此文档中定义的每个顶级 WSDL 2.0 组件也与这个命名空间相关联。任何不是文档目标命名空间的命名空间都称为外部命名空间。任何与外部命名空间相关联的组件都称为外部组件。本节描述了在 WSDL 2.0 文档中引用外部组件的语法和机制。除了这种语法之外,还有一个可选的功能,用于建议包含外部组件定义的 WSDL 2.0 文档的 IRI。

    WSDL 2.0 import 元素与 XML Schema import 元素(参见 [XML Schema: Structures], section 4.2.3 "References to schema components across namespaces")类似,可以用于从外部命名空间导入 WSDL 2.0 组件。WSDL 2.0 import 元素标识一个外部命名空间。wsdl:import 元素的存在表示 WSDL 2.0 文档可能包含对外部组件的引用。因此,wsdl:import 元素就像外部命名空间的前置声明。

    与 XML schema 一样,任何引用外部组件的 WSDL 2.0 文档必须为相关的外部命名空间包含一个 wsdl:import 元素(但不一定提供一个标识定义引用组件的 WSDL 2.0 文档的 location 属性)。否则,组件的可见性是普遍的:如果两个 WSDL 2.0 文档导入相同的命名空间,那么它们将可以访问从导入的命名空间中相同的组件(即无论 wsdl:import 元素上的 location 属性取值如何)。

    使用wsdl:import 元素信息项是使外部组件可用于 WSDL 2.0 文档的必要条件。也就是说,如果 WSDL 2.0 文档包含关联的外部名称空间的wsdl:import 元素信息项,则它只能引用外部组件 。

    如果一个 WSDL 2.0 文档对于给定的命名空间属性值包含多个 wsdl:import 元素,那么它们必须为 location 属性提供不同的值。对于相同的命名空间值重复 wsdl:import 元素,可以作为提供命名空间的备用位置信息的一种方式。

    此外,本规范不要求 location 属性信息项是可解引用的。wsdl:import 当它不可解除引用时,该元素信息项不提供有关导入的命名空间的信息。这种信息的缺乏可能会导致 WSDL 2.0 描述组件其他部分中的 QName 成为损坏的引用(请参阅 2.17 QName 解析)。这种损坏的引用并不归因于wsdl:import 元素信息项,而是 QName 解析要求的失败,必须按照 2.17 QName 解析中的描述进行检测。

    元素import 信息项具有以下 Infoset 属性:

    • [本地名称] import。

    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    • [attributes]中的一个或多个属性信息项如下:

      • 一个 REQUIRED 命名空间属性信息项,如下面的 4.2.1 命名空间属性信息项中所述。
      • 可选location 属性信息项,如下面 4.2.2 位置属性信息项中所述 ,具有 import [owner element] 。
      • 零个或多个名称空间限定的属性信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。
    • 其[children]中有零个或多个元素信息item,如下:

      • 零个或多个documentation 元素信息项(参见5. 文档)。
      • 零个或多个名称空间限定的元素信息项,其 [名称空间名称] 不是“http://www.w3.org/ns/wsdl”。

    4.2.1namespace 属性信息项

    属性namespace 信息项 具有以下Infoset属性:

    • 的[本地名称] namespace。
    • 没有值的[命名空间名称]。

    命名空间属性的类型是 xs:anyURI。它的实际值表明包含的 WSDL 2.0 文档可以通过在正常方式中声明的一个或多个前缀包含对该命名空间中 WSDL 2.0 组件的限定引用。这个值必须与包含的 WSDL 2.0 文档的 targetNamespace 属性的实际值不匹配。如果 import 元素的 location 属性可引用,那么它必须引用一个 WSDL 2.0 文档。如果 import 元素的 location 属性可引用,那么命名空间属性的实际值必须与被引用的 WSDL 2.0 文档的 targetNamespace 属性的实际值相同(参见 7. 定位 WSDL 2.0 文档)。链接到断言 Import-1086 摘要")

    4.2.2 带 import [所有者元素] 的 location 属性信息项

    属性location 信息项 具有以下 Infoset 属性:

    • [本地名称] location。
    • 没有值的[命名空间名称]。

    属性location 信息项的类型为xs:anyURI。它的实际值(如果存在)会提示可以在哪里找到具有导入名称空间定义的 WSDL 2.0 文档的序列化。

    属性location 信息项是可选的。这允许从 WSDL 2.0 文档的 XML 1.0 序列化之外的信息构造 WSDL 2.0 组件。它还允许开发具有某些名称空间的先验(即内置)知识的 WSDL 2.0 处理器。

    4.3 扩展

    扩展的语义不应取决于组件是如何通过<import>或<include>引入组件模型实例的。† 也就是说,WSDL 2.0 文档定义的组件由文档内容决定,除了对其他组件的引用的解析可能在其他文档中定义之外,以及任何进一步的处理,这取决于这些引用已经被解析为实际组件,正如扩展规范所规定的那样。

    对扩展行为的这种限制允许 WSDL 2.0 文档可以灵活模块化和高效处理。相比之下,注意 XML Schema 的所谓变色龙 include 机制,它允许一个无命名空间的 schema 被包含在有命名空间的 schema 文档中,这违反了这个限制,因为所包含的 XML Schema 组件的命名空间由包含的 XML Schema 文档决定(参见 [XML Schema: Structures] 中的4.2.1 从多个模式定义文档组装单个目标命名空间的模式)。

    5. 文档

    <documentation>
      [extension elements]*
    </documentation>
    

    WSDL 2.0 使用可选的 documentation 元素信息项作为人类可读或机器可处理文档的容器。元素信息项的内容是任意字符信息项和元素信息项(XML Schema 中的“混合”内容)。documentation 元素信息项允许出现在任何 WSDL 2.0 元素信息项内。

    与“http://www.w3.org/ns/wsdl”命名空间中的其他*元素信息项*一样, documentation 元素信息项允许[命名空间名称]不是“http://www.w3”的限定*属性信息项*.org/ns/wsdl”。该`xml:lang` 属性(参见[ XML 1.0documentation  ])可以用来指示元素信息项的内容中使用的语言 。

    元素documentation 信息项 有:

    • [本地名称] documentation。
    • “http://www.w3.org/ns/wsdl”的[命名空间名称]。
    • 其 [attributes] 属性中有零个或多个属性信息项。
    • 其 [children] 属性中有零个或多个子元素信息 item 。
    • 其 [children] 属性中有零个或多个字符信息 item 。

    6. 语言可扩展性

    WSDL 2.0 的模式有一个基于名称空间限定的元素和属性的两部分可扩展性模型。扩展由 QName 标识,该 QName 包含其命名空间 IRI 及其元素或属性名称。扩展的含义应该(直接或间接)在其命名空间 IRI 上可用的文档中定义。†

    6.1 基于元素的可扩展性

    WSDL 2.0 允许使用基于元素信息项的方式定义扩展。在本文档中指明的地方,当特定元素信息项的[命名空间名称]为"http://www.w3.org/ns/wsdl"时,WSDL 2.0允许命名空间限定的元素信息项作为其[子元素]出现。这样的元素信息项可以用于对 WSDL 2.0 构造的注解,例如接口、操作等。

    预计扩展将添加到组件模型中组件的现有属性。扩展元素信息项的规范应包括任何此类属性的定义以及从扩展的 XML 表示形式到组件模型中的属性的映射。

    WSDL 2.0 模式定义了供扩展元素使用的基本类型。示例 6-1显示了类型定义。是否使用此类型作为基本类型是可选的。

    例 6-1。扩展元素的基本类型

    <xs:complexType name='ExtensionElement' abstract='true' >
      <xs:attribute ref='wsdl:required' use='optional' /> 
    </xs:complexType>
    

    扩展元素通常用于指定一些特定于技术的绑定。它们允许网络和消息协议领域的创新,而无需修改基本的 WSDL 2.0 规范。WSDL 2.0 建议定义此类协议的规范也定义用于描述这些协议或格式的任何必要的 WSDL 2.0 扩展。

    6.1.1 强制扩展

    扩展元素可以通过使用带有 “true” 值的 wsdl:required 属性信息项(参见6.1.2 required属性信息项)进行标注,将其标记为强制性的。强制性扩展是可能改变所附加元素的意义的扩展,以至于该元素的意义不再由本规范管理。相反,包含强制性扩展的元素的意义由定义该扩展的规范管理。因此,元素意义的定义委托给定义扩展的规范。

    未标记为强制的扩展不得使 WSDL 2.0 文档的任何部分的含义无效。† 因此,非强制扩展仅提供服务功能的附加描述。本规范没有提供将扩展属性标记为必需的机制。因此,所有扩展属性都是非强制性的。

    注意:

    强制扩展被认为是强制的,因为它能够改变它所附加的元素的含义。因此,如果不理解所附的扩展,则可能无法完全理解该元素的含义。另一方面,可以安全地忽略非强制扩展,而不会产生误解 WSDL 2.0 文档其余部分的危险。

    如果 WSDL 2.0 文档将扩展声明为可选(即非强制),则 Web 服务不得假设客户端支持该扩展,除非 Web 服务知道(通过其他方式)客户端实际上已选择支持该扩展参与并支持该扩展。†

    注意:

    扩展的一个关键目的是正式指示(即,以机器可处理的方式)支持或需要特定功能或约定。这使得理解扩展的工具包能够自动参与它,而尚不理解所需扩展的工具包可能会引起操作员的注意以进行手动支持。

    如果 Web 服务要求客户​​端遵循可能在 WSDL 2.0 工具包中自动化的特定约定,那么该约定应该在 WSDL 2.0 文档中指示为扩展,而不是仅仅在带外传送,即使wsdl:required这样目前,WSDL 2.0 工具包中尚未实现该约定。

    如果一个工具包需要 WSDL 2.0 文档中未指示的特定约定,而另一个工具包没有意识到需要该约定,则这种做法将有助于防止可能出现的互操作性问题。它还将有助于促进 WSDL 2.0 工具包未来的自动处理。

    另一方面,客户端可以使用 WSDL 2.0 文档中声明为可选的扩展。因此,Web 服务除了支持声明为强制的每个扩展之外,还必须支持 WSDL 2.0 文档中声明为可选的每个扩展。†

    注意:

    如果需要对扩展进行更细粒度、方向敏感的控制,则可以以方向敏感的方式(从客户端或从 Web 服务)设计此类扩展,以便可以单独将任一方向标记为必需或可选。例如,可以定义两个扩展(每个方向一个),而不是定义控制两个方向的单个扩展。

    WSDL 2.0 文档的有效性只能在一组受支持的扩展的上下文中进行评估。包含必需但不受支持的扩展的 WSDL 2.0 文档对于该组受支持的扩展来说是无效的。

    6.1.2 required 属性信息项

    WSDL 2.0 提供了具有以下 Infoset 属性的全局属性信息项:

    • [本地名称] required。
    • “http://www.w3.org/ns/wsdl” 的[命名空间名称]。

    required 属性信息项的类型为 xs:boolean。它的默认值为 “false”(因此默认情况下不需要扩展)。

    6.2 基于属性的可扩展性

    WSDL 2.0 允许[名称空间名称] 不是“http://www.w3.org/ns/wsdl” 的限定属性信息项出现在名称空间名称为“http://www.w3.org/ns/wsdl” 的任何元素信息项上。 org/ns/wsdl”。此类属性信息项可用于注释 WSDL 2.0 构造,例如接口、绑定等。

    WSDL 2.0 没有提供将扩展 属性信息项标记为强制的机制。

    6.3 可扩展性语义

    如上所述,预计扩展元素和属性的存在将导致组件模型中出现附加属性。

    因此,可选扩展元素或属性的存在可以以不使现有语义无效的方式增强 WSDL 2.0 文档的语义。然而,强制扩展元素的存在可能会改变 WSDL 2.0 文档的语义,从而使现有语义失效。

    扩展元素不应以可能使用户感到困惑的方式改变现有语义。

    注意:

    但请注意,一旦客户端和服务都知道已使用可选扩展(例如,因为服务已收到明确使用该扩展的消息),则该扩展的语义将取代 WSDL 2.0 文档指示的内容。例如,WSDL 2.0 文档可能指定了要使用的 XML 消息模式,但也指示了加密消息的可选安全扩展。如果使用安全扩展,则加密的消息将不再符合指定的消息模式(直到它们被解密)。

    注意:

    扩展元素的作者应确保在这些元素的规范中包含文档一致性要求的明确声明(请参阅1.3 文档一致性)。

    注意:

    可能表现为描述组件属性的扩展元素的作者应该意识到导入对其扩展的影响,或者其扩展对导入的影响。在组件模型中,不可能定义有效范围等于包含文件范围的扩展。因此,修改描述中包含的组件的行为的扩展也可能会意外地修改导入的描述中的组件的行为,除非采取适当的措施。

    7. 查找 WSDL 2.0 文档

    WSDL 2.0 文档是一个description 元素信息项,它可以是 XML 文档的文档根,也可以是 XML 文档中的元素。因此,WSDL 2.0 的位置 可以由 XML 资源的 IRI 指定,该 XML 资源的文档根是元素 信息description 项或 XML 资源内description 元素信息项的 IRI 引用。

    作为 XML 词汇表,WSDL 2.0 文档、WSDL2.0 文档片段或对 WSDL 2.0 组件的 QName 引用可以出现在其他 XML 文档中。本规范定义了一个全局属性 ,wsdlLocation以帮助进行 QName 解析(请参阅2.17 QName 解析)。这一属性允许对包含此类引用的元素进行注释,以指示可以在何处找到一个或多个名称空间的 WSDL 2.0 文档。特别是,当在消息交换中使用服务引用时,该属性预计会很有用。

    全局wsdlLocation属性在命名空间“http://www.w3.org/ns/wsdl-instance” (为简洁起见,以下称为“wsdli:wsdlLocation”)中定义。该属性可以出现在任何允许其他名称空间的属性出现的 XML 元素上。它不得出现在wsdl:description元素或其任何子元素/后代元素上。†

    “http://www.w3.org/ns/wsdl-instance” 命名空间 的规范 XML 模式 [ XML 模式:结构]、[ XML 模式:数据类型 文档可以在http://www.w3.org/ns/wsdl-instance 中找到。

    7.1 wsdli:wsdlLocation 属性信息项

    WSDL 2.0 提供了具有以下 Infoset 属性的全局属性信息项:

    • [本地名称] wsdlLocation。
    • “http://www.w3.org/ns/wsdl-instance” 的[命名空间名称]。

    wsdlLocation 属性信息项的类型是列表 xs:anyURI。它的实际值必须是 IRI 对的列表;其中,一对 IRI 中的第一个 IRI(必须是 [ IETF RFC 3987 ] 中定义的绝对 IRI)指示 WSDL 2.0(或 1.1)名称空间名称,第二个 IRI 指示 WSDL 2.0 文档定义的位置该命名空间名称的WSDL 2.0 组件(或 WSDL 1.1 元素 [ WSDL 1.1 ])。† 一对 IRI 中的第二个 IRI 可以是绝对的或相对的。对于每对 IRI,如果该对的位置 IRI 是可取消引用的,那么它必须引用一个 WSDL 2.0(或 1.1)文档,该文档的目标名称空间是该对的名称空间 IRI。†

    8. 一致性

    本节描述本规范如何符合其他规范。目前,这仅限于 XML 信息集规范。请参阅1.3 文档一致性,了解 Web 服务描述文档必须满足的标准的描述,以符合本规范。

    8.1 XML信息集一致性

    该规范符合[ XML 信息集]。输入信息集中必须存在以下信息项,才能正确处理 WSDL 2.0 文档:

    • 具有 [ children ] 和 [ base URI ] 属性的文档信息项。
    • 具有[namespace name]、[local name]、[children]、[attributes]、[base URI]和[parent]属性的 Element 信息项。
    • 具有[namespace name]、[local name]和[normalized value]属性的 Attribute 信息项。
    • 具有[character code]、[element content whitespace]和[parent]属性的 Character 信息项。

    9. XML 语法摘要(非规范)

    <description targetNamespace="xs:anyURI" >
      <documentation />*
    
      <import namespace="xs:anyURI" location="xs:anyURI"? >
        <documentation />*
      </import>*
    
      <include location="xs:anyURI" >
        <documentation />*
      </include>*
    
      <types>
        <documentation />*
        
          [ <xs:import namespace="xs:anyURI" schemaLocation="xs:anyURI"? /> |
            <xs:schema targetNamespace="xs:anyURI"? /> |
            other extension elements ]*
      </types>
    
      <interface name="xs:NCName" extends="list of xs:QName"? styleDefault="list of xs:anyURI"? >
        <documentation />*
    
        <fault name="xs:NCName" element="union of xs:QName, xs:token"? >
          <documentation />*
        </fault>*
    
        <operation name="xs:NCName" pattern="xs:anyURI"? style="list of xs:anyURI"? >
          <documentation />*
    
          <input messageLabel="xs:NCName"? element="union of xs:QName, xs:token"? >
            <documentation />*
          </input>*
    
          <output messageLabel="xs:NCName"? element="union of xs:QName, xs:token"? >
            <documentation />*
    
          </output>*
    
          <infault ref="xs:QName" messageLabel="xs:NCName"? >
            <documentation />*
          </infault>*
    
          <outfault ref="xs:QName" messageLabel="xs:NCName"? >
            <documentation />*
          </outfault>*
    
        </operation>*
    
      </interface>*
    
      <binding name="xs:NCName" interface="xs:QName"? type="xs:anyURI" >
        <documentation />*
    
        <fault ref="xs:QName" >
          <documentation />*
        </fault>*
    
        <operation ref="xs:QName" >
          <documentation />*
    
          <input messageLabel="xs:NCName"? >
            <documentation />*
          </input>*
    
          <output messageLabel="xs:NCName"? >
            <documentation />*
          </output>*
    
          <infault ref="xs:QName" messageLabel="xs:NCName"? >
            <documentation />*
          </infault>*
    
          <outfault ref="xs:QName" messageLabel="xs:NCName"? >
            <documentation />*
          </outfault>*
    
        </operation>*
    
      </binding>*
    
      <service name="xs:NCName" interface="xs:QName" >
        <documentation />*
    
        <endpoint name="xs:NCName" binding="xs:QName" address="xs:anyURI"? >
          <documentation />*
        </endpoint>+
    
      </service>*
    </description>
    
    修改于 2023-10-17 08:49:13
    Built with