XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


XML 和 WSDL

  • WSDL代表Web服务描述语言
  • WSDL用于描述web服务
  • WSDL是用XML编写的
  • WSDL 是 2007 年 6 月 26 日的 W3C 推荐标准

WSDL文档

WSDL文档描述web服务。它使用以下主要元素指定服务的位置和服务的方法:

元素 描述
<types> 定义web服务使用的(XML架构)数据类型
<message> 定义每个操作的数据元素
<portType> 描述可以执行的操作和涉及的消息。
<binding> 定义每个端口类型的协议和数据格式

WSDL文档的主要结构如下所示:

<definitions>

<types>
  data type definitions........
</types>

<message>
  definition of the data being communicated....
</message>

<portType>
  set of operations......
</portType>

<binding>
  protocol and data format specification....
</binding>

</definitions>


WSDL实例

这是WSDL文档的简化部分:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

在本例中, <portType>元素将"glossaryTerms"定义为端口名,"getTerm" 定义为操作名。

"getTerm"操作有一个名为"getTermRequest"的输入消息和一个名为"getTermResponse"的输出消息

<message> 元素定义每个消息的部分和相关的数据类型。


<portType> 元素

<portType> 元素定义了一个web服务、可以执行的操作以及所涉及的消息。

请求-响应类型是最常见的操作类型,但WSDL定义了四种类型:

类型 定义
One-way 该操作可以接收消息,但不会返回响应
Request-response 该操作可以接收请求并返回响应
Solicit-response 操作可以发送请求并等待响应
Notification 该操作可以发送消息,但不会等待响应

WSDL单向操作

单向操作实例:

<message name="newTermValues">
  <part name="term" type="xs:string"/>
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="setTerm">
    <input name="newTerm" message="newTermValues"/>
  </operation>
</portType >

在上面的实例中,portType"glossaryTerms"定义了一个名为"setTerm"的单向操作。

"setTerm" 操作允许使用带有输入参数"term"和"value"的"newTermValues"消息输入新的词汇表术语消息。但是,没有为操作定义输出。


WSDL请求-响应操作

请求响应操作实例:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

在上面的实例中,portType"glossaryTerms"定义了一个名为"getTerm"的请求-响应操作。

"getTerm" 操作需要一个名为"getTermRequest"的输入消息和一个名为"term"的参数,并将返回一个名为"getTermResponse"的输出消息和一个名为"value"的参数。


WSDL绑定到SOAP

WSDL绑定定义了web服务的消息格式和协议细节。

请求-响应操作实例:

<message name="getTermRequest">
  <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
    <input message="getTermRequest"/>
    <output message="getTermResponse"/>
  </operation>
</portType>

<binding type="glossaryTerms" name="b1">
   <soap:binding style="document"
   transport="http://schemas.xmlsoap.org/soap/http" />
   <operation>
     <soap:operation soapAction="http://example.com/getTerm"/>
     <input><soap:body use="literal"/></input>
     <output><soap:body use="literal"/></output>
  </operation>
</binding>

绑定元素有两个属性-name和type。

name属性(您可以使用任何想要的名称)定义绑定的名称,type属性指向绑定的端口,在本例中是"glossaryTerms"端口。

soap:binding 有两个属性-样式和传输。

样式属性可以是"rpc"或"document"。在这种情况下,我们使用文档。transport属性定义要使用的SOAP协议。在本例中,我们使用HTTP。

operation 元素定义portType公开的每个操作。

对于每个操作,必须定义相应的SOAP操作。您还必须指定输入和输出是如何编码的。在本例中,我们使用 "literal".