下面一節將討論資料處理常式的限制。
SOAP 訊息使用 Web 服務所定義的 style 和 use 來建立的。SOAP 資料處理常式提供表 46 中所顯示的支援層次。
Style | Use | 定義的組件使用 | 資料處理常式支援 |
---|---|---|---|
document | literal | element | 全部 |
document | literal | type | 有限制 (請參閱下面說明) |
document | encoded | element | 無 |
document | encoded | type | 有限制 (請參閱下面說明) |
rpc | literal | element | 無 |
rpc | literal | type | 全部 |
rpc | encoded | element | 無 |
rpc | encoded | type | 全部 |
當 SOAP 資料處理常式將 SOAP 訊息轉換成商業物件, 且 SOAP 訊息遵循 document/literal/type 或 document/encoded/type 格式時, 訊息組件的順序必須依照 WSDL 中所描述的順序。例如您可以參酌下列 WSDL:
<operation name="GetQuote" style="document" ...> <input> <soap:body parts="Part1 Part2 Part3 Part4" use="literal"> </input> </operation> <definitions xmlns:stns="(SchemaTNS)" xmlns:wtns="(WsdlTNS)" targetNamespace="(WsdlTNS)"> <schema targetNamespace="(SchemaTNS)" elementFormDefault="qualified"> <element name="SimpleElement" type="xsd:int"/> <element name="CompositElement" type="stns:CompositeType"/> <complexType name="CompositeType"> <all> <element name='elem_a' type="xsd:int"/> <element name='elem_b' type="xsd:string"/> </all> </complexType> </schema> <message...> <part name='Part1' type="stns:CompositeType"/> <part name='Part2' type="xsd:int"/> <part name='Part3' element="stns:SimpleElement"/> <part name='Part4' element="stns:CompositeElement"/> </message> Ö </definitions>
SOAP 訊息必須遵循組件所定義的順序。 於以下的 SOAP 範例中,請注意 Part1 元素要在 Part2、Part3 及 Part4 元素之前。 為了可正確地進行 BO 解析,必須維持此順序。
<soapenv:body... xmlns:mns="(MessageNS)" xmlns:stns="(SchemaTNS)"> <stns:elem_a>123</stns:elem_a> <stns:elem_b>hello</stns:elem_b> <soapenc:int>123</soapenc:int>123</soapenc:int>123</soapenc:int> <stns:SimpleElement>123</stns:SimpleElement> <stns:CompositeElement> <stns:elem_a>123</stns:elem_a> <stns:elem_b>hello</stns:elem_b> </stns:CompositeElement> </soapenv:body>
當 SOAP 訊息遵循 document/literal/type 或 document/encoded/type 格式時, 組件元素亦必須遵循該順序。 於上例的 Part1 中,elem_a 標籤必須在 elem_b 標籤之前。 此限制是由資料處理常式的商業物件解析程序來指定的。 由於文件樣式的預設商業物件解析會使用第一個元素的主體名稱及名稱空間, 所以在此特定要求、回應或錯誤的所有 SOAP 訊息中,這些都必須是相同元素, 如此才能在每個案例中解析相同的商業物件。
下列 XML 結構、特性及表示法不受支援: