asp学习网: 首页 >> asp.net >> SOAP:简单对象访问协议

SOAP:简单对象访问协议


3. 与XML的关系
所有的SOAP消息都使用XML形式编码(更多有关XML的信息请见[7])
一个SOAP应用程序产生的消息中,所有由SOAP定义的元素和属性中必须包括正确的名域
。SOAP应用程序必须能够处理它接收到的消息中的SOAP名域(见4.4节),并且它可以处
理没有SOAP名域的SOAP消息,就象它们有正确的名域一样。
SOAP定义了两个名域(更多有关XML名域的信息请见[8])
SOAP封装的名域标志符是"http://schemas.xmlsoap.org/soap/envelope/
SOAP的编码规则的名域标志符是"http://schemas.xmlsoap.org/soap/encoding/
SOAP消息中不能包含文档类型声明,也不能包括消息处理指令。[7]
SOAP使用"ID"类型"id"属性来指定一个元素的唯一的标志符,同时该属性是局部的和无
需校验的。SOAP使用"uri-reference"类型的"href"属性指定对这个值的引用,同时该属
性是局部的和无需校验的。这样就遵从了XML规范[7],XML Schema规范[11]和XML连接语
言规范[9]的风格。
除了SOAP mustUnderstand 属性(见4.2.3节)和SOAP actor属性(见4.2.2节)之外,一
般允许属性和它们的值出现在XML文档实例或Schema中(两者效果相同)。也就是说,在
DTD或Schema中声明一个缺省值或固定值和在XML文档实例中设置它的值在语义上相同。

4. SOAP封装
SOAP消息是一个XML文档,包括一个必需的SOAP封装,一个可选的SOAP头和一个必需的S
OAP体。在这篇规范剩余部分中,提到SOAP消息时就是指这个XML文档。这一节中定义的
元素和属性的名域标志符为:"http://schemas.xmlsoap.org/soap/envelope/ 。一个
SOAP消息包括以下部分:
在表示这个消息的XML文档中,封装是顶层元素。
应用SOAP交换信息的各方是分散的且没有预先协定,SOAP头提供了向SOAP消息中添加关
于这条SOAP消息的某些要素(feature)的机制。SOAP定义了少量的属性用来表明这项要素
(feature)是否可选以及由谁来处理。(见4.2节)
SOAP体是包含消息的最终接收者想要的信息的容器(见4.3节)。SOAP为SOAP体定义了一
个Fault元素用来报告错误信息。
语法规则如下所示:
封装
元素名是 "Envelope"
在SOAP消息中必须出现。
可以包含名域声明和附加属性。如果包含附加属性,这些属性必须限定名域。类似的,
"Envelope"可以包含附加子元素,这些也必须限定名域且跟在SOAP体元素之后。
SOAP头 (见4.2节)
元素名是"Header"
在SOAP消息中可能出现。如果出现的话,必须是SOAP 封装元素的第一个直接子元素。
SOAP头可以包含多个条目,每个都是SOAP头元素的直接子元素。所有SOAP头的直接子元
素都必须限定名域。
SOAP体 (见4.3节)
元素名是"Body"
在SOAP消息中必须出现且必须是SOAP封装元素的直接子元素。它必须直接跟在SOAP头元
素(如果有的话)之后。否则它必须是SOAP封装元素的第一个直接子元素。
SOAP体可以包括多个条目,每个条目必须是SOAP体元素的直接子元素。SOAP体元素的直
接子元素可以限定名域。SOAP定义了SOAP Fault元素来表示错误信息。(见4.4节).
4.1.1 SOAP encodingStyle 属性
EncodingStyle全局属性用来表示SOAP消息的序列化规则。这个属性可以在任何元素中出
现,作用范围与名域声明的作用范围很相似,为这个元素的内容和它的所有没有重载此
属性的子元素。SOAP消息没有定义缺省编码。
属性值是一个或多个URI的顺序列表,每个URI确定了一种或多种序列化规则,用来不同
程度反序列化SOAP消息,举例如下:
"http://schemas.xmlsoap.org/soap/encoding/
"http://my.host/encoding/restrictedhttp://my.host/encoding/
""
第5节中定义的序列化规则由URI"http://schemas.xmlsoap.org/soap/encoding/ 确定
。使用这个特定序列化规则的消息应该用encodingStyle属性说明这一点。另外,所有以
"http://schemas.xmlsoap.org/soap/encoding/开头的URI中的序列化规则与第5节中定
义的SOAP编码规则相一致。
一个零长度的URI("")明确显示所含元素没有任何编码形式。这可以用来取消上一级元
素的所有编码声明。

from:asp学习网/title:SOAP:简单对象访问协议/ time:2007-6-18 10:41:59

本文主题SOAP

asp教程 ©2006-2007 aspxuexi.com | 关于站点 | 版权隐私 | 站内搜索
复制或者翻版 请于夜间进行