我正在嘗試爲傳統服務編寫WSDL 1.1定義,該服務的文檔指定了XML模式,該模式使用不同消息的不同定義對超負載的根(和其他)元素進行了定義。傳統服務中過載元素的WSDL
一個小示例包括下列架構一個消息:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:example:namespace">
<element name="message" type="boolean"/>
</schema>
和用於另一以下:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:example:namespace">
<element name="message" type="date"/>
</schema>
人們不能因此直接導入每個消息的架構給出到WSDL,如它在{urn:example:namespace}message
的定義中引入了模糊性。
也可以改寫的模式使得這樣的過載元件同時驗證消息類型,因爲這將錯誤地暗示任一類型是有效的任一消息:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:example:namespace">
<element name="message">
<simpleType>
<union memberTypes="boolean date"/>
</simpleType>
</element>
</schema>
它令我每個消息應在其自己的命名空間中定義,或者在相同的命名空間中使用明確的元素名稱。但是,這樣的改變會破壞傳統的服務合同,因此可悲的是不是一種選擇。
感謝您對如何解決這個難題的想法和建議!
此樣式不符合WS-I BP 1.1標準。您必須使用'element'屬性,而不是使用消息部分的'type'屬性來符合。另外,順便說一句,這種風格往往不起作用,因爲它參數名稱空間的模糊不清。 – 2011-05-18 14:05:33
@John Saunders:如果沒有更好的解決方案即將出現,我們可以容忍缺乏WS-I BP 1.1合規性;不確定參數名稱空間爲什麼不明確 - 它是不是WSDL定義的「targetNamespace」(即'urn:example:wsdl')? – eggyal 2011-05-18 14:20:41
[後續問題](http://stackoverflow.com/questions/6046477/referring-to-overloaded-elements-from-different-schema)我參考。 – eggyal 2011-05-18 14:36:28