我有一個定義了兩個模式相同命名空間,這樣的WSDL文件:如何引用在同一個WSDL文件中定義的模式?
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/payments"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://example.com/payments">
<xsd:complexType name="TestType">
<xsd:sequence>
<xsd:element name="Version" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/payments"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://example.com/payments">
<xsd:element name="TestRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Header" type="TestType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
果然TestType
不能從TestRequest
引用。我發現了幾個answers,顯示你如何通過xsd:include
(因爲我使用相同的targetNamespace
)爲不同的文件執行此操作,但我在如何給schemaLocation
添加文件時遇到困難?
請注意,是否這不是我應該做的事情不是問題。 I 知道如果我將元素定義移動到相同的模式定義中,問題就會消失。
實際上,XPointer的解決方案通常是使用XSD處理器使用的URIResolver。 XSD處理器可能本身不支持XPointer,但是在URIResolver中,您可以以任何方式執行此操作(假設您的系統允許您添加URIResolver,並且您可以訪問XPointer實現)。 – Abel
所以你說的是CXF(這裏使用的是什麼)應該能夠理解模式? – mabi
@mabi,是的,它應該。如果沒有,只需重構它並繼續前進 - 除非您有時間自行修復它,因爲代碼是開源的:)。 –