是否可以在具有可变元素顺序的 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>
由于错误的元素顺序,将是无效的,但不应该是因为所有元素都存在。