要素の順序が可変の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>
最も簡単な解決策は、「all」の代わりに「sequence」を使用することですが、私の場合、要素の順序が保証されていないため、これはオプションではありません。次のようなものです。
<obj>
<B/>
<C/>
<D/>
<A/>
</obj>
要素の順序が間違っているため無効になりますが、すべての要素が存在するため、無効になるべきではありません。