是否可以在具有可变元素顺序的 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>
最简单的解决方案就是使用“sequence”而不是“all”,但在我的情况下,这不是一个选项,因为不能保证元素顺序,所以像这样:
<obj>
<B/>
<C/>
<D/>
<A/>
</obj>
由于错误的元素顺序,将是无效的,但不应该是因为所有元素都存在。