第 5 节中定义的序列化规则由 URI"http://schemas.xmlsoap.org/soap/encoding/" 确定。使用这
个 特 定 序 列 化 规 则 的 消 息 应 该 用 encodingStyle 属 性 说 明 这 一 点 。 另 外 , 所 有
以"http://schemas.xmlsoap.org/soap/encoding/"开头的 URI 中的序列化规则与第 5 节中定义的
SOAP 编码规 则相一致。一个零长度的 URI("")明确显示所含元素没有任何编码形式。
这可以用来取消上一级元素的所有编码声明。
4.1.2 封装版本模型
SOAP 没有定义常规的基于主版本号和辅版本号的版本形式。SOAP 消息必须有一个封装元
素与名域"http://schemas.xmlsoap.org /soap/envelope/"关联。如果 SOAP 应用程序接收到的
SOAP 消息中的 SOAP 封装元素与其他的名域关联,则视为版本错误,应用程序必须 丢弃
这个消息。如果消息是通过 HTTP 之类的请求/应答协议收到的,应用程序必须回答一个
SOAP VersionMismatch 错误信息(见 4.4 节)。
4.2 SOAP 头
SOAP 为相互通信的团体之间提供了一种很灵活的机制:在无须预先协定的情况下,以分
散但标准的方式扩展消息。可以在 SOAP 头中添加条目实现这种扩展,典型的例 子有认证,
事务管理,支付等等。头元素编码为 SOAP 封装元素的第一个直接子元素。头元素的所有
直接子元素称作条目。条目的编码规则如下:
一个条目有它的完整的元素名(包括名域 URI 和局部名)确定。SOAP 头的直接子元素必
须有名域限制。
SOAP encodingStyle 属性可以用来指示条目所用的编码形式(见 4.1.1 节)
SOAP mustUnderstand 属性(见 4.2.3 节)和 SOAPactor 属性(见 4.2.2 节)可以用来指示如
何处理这个条目以及由谁来处理。(见 4.2.1 节)
4.2.1 使用头属性
这 一节中定义的 SOAP 头属性确定了 SOAP 消息的接收者应该怎样按第 2 节中所述的方式
处理消息。产生 SOAP 消息的 SOAP 应用程序,应该仅仅在 SOAP 头元素的直接子元素中
使用这些 SOAP 头属性。SOAP 消息的接收者必须忽略所有不在 SOAP 头元素的直接子元
素 中 SOAP 头 属 性 。 下 面 的 例 子 是 一 个 SOAP 头 , 包 括 一 个 元 素 标 志
符"Transaction","mustUnderstand"取值为"1"和数值 5。这应该以如下方式编码:
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
5
</t:Transaction>
</SOAP-ENV:Header>
4.2.2 SOAP actor 属性
一 个 SOAP 消息从始节点到终节点的过程中,可能沿着消息路径经过一系列 SOAP 中间节