Xml 在基序列之前添加序列

Xml 在基序列之前添加序列,xml,xsd,Xml,Xsd,我有以下XML: <Base> <ElementInBase /> <OtherElementInBase /> </Base> <Derived> <ElementInChildren /> <ElementInBase /> <OtherElementInBase /> </Derived> 但这只允许ElementInChildren位于Base元素之后。您只

我有以下XML:

<Base>
  <ElementInBase />
  <OtherElementInBase />
</Base>

<Derived>
  <ElementInChildren />
  <ElementInBase />
  <OtherElementInBase />
</Derived>

但这只允许
ElementInChildren
位于
Base

元素之后。您只需将
Base
定义为元素组,并在
派生的
复杂类型中引用它:

<xs:group name="Base">
   <xs:sequence>
      <xs:element ref="ElementInBase"  minOccurs="0" maxOccurs="1"/>
      <xs:element ref="OtherElementInBase "  minOccurs="0" maxOccurs="1"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="Derived">
  <xs:sequence>
    <xs:element name="ElementInChildren" minOccurs="0" maxOccurs="1"></xs:element>
    <xs:group ref="Base"/>
  </xs:sequence>
</xs:complexType>

这会将儿童中的
元素置于
Base
中定义的内容之前

请在此阅读我的答案:

<xs:group name="Base">
   <xs:sequence>
      <xs:element ref="ElementInBase"  minOccurs="0" maxOccurs="1"/>
      <xs:element ref="OtherElementInBase "  minOccurs="0" maxOccurs="1"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="Derived">
  <xs:sequence>
    <xs:element name="ElementInChildren" minOccurs="0" maxOccurs="1"></xs:element>
    <xs:group ref="Base"/>
  </xs:sequence>
</xs:complexType>