【问题标题】:Add sequence before base sequence在基本序列之前添加序列
【发布时间】:2014-10-11 19:24:36
【问题描述】:

我有这个 XML:

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

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

所以基本上我想让Derived 中的另一个序列出现在父Base 的序列之前。

目前我有这个架构:

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

<xs:complexType name="Derived">
    <xs:complexContent>
        <xs:extension base="Base">
            <xs:sequence>
                <xs:element name="ElementInChildren"  minOccurs="0" maxOccurs="1"></xs:element>
            </xs:sequence>
        </xs:extension>

    </xs:complexContent>
</xs:complexType>

但这仅允许ElementInChildren 位于Base 的元素之后。

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    您只需将您的Base 定义为一个元素组 并在您的Derived complexType 中引用它:

    <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>
    

    这会将ElementInChildren 放在Base 中定义的内容之前。

    请在此处阅读我的回答:In XML Schema, why does an element group tag even exist?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      相关资源
      最近更新 更多