2
是否可以在xsd中使用具有可變元素順序的繼承?是否有可能在變量元素順序中使用xsd繼承?
基本上,像這樣是不行的,因爲「所有」不「擴展」允許入內:
<xs:complexType name="root">
<xs:complexContent>
<xs:all>
<xs:element name="A" type="xs:string"/>
<xs:element name="B" type="xs:string"/>
</xs:all>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="extended">
<xs:complexContent>
<xs:extension base="root">
<xs:all>
<xs:element name="C" type="xs:string"/>
<xs:element name="D" type="xs:string"/>
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
最簡單的解決辦法是隻使用「序列」,而不是「所有」,但於我而言,這是不是一種選擇,因爲該元素的順序不能保證,所以是這樣的:
<obj>
<B/>
<C/>
<D/>
<A/>
</obj>
會因爲錯誤的元素順序無效,但不應該因爲所有的元素都存在。
我剛剛用Xerces測試版分析器在Java中測試了這個版本,它支持1.1 XML模式,並且得到了和以前一樣的錯誤 - 在哪裏/如何根據XSD 1.1規範測試模式是否合法? – Shajirr 2012-04-23 23:26:11