在XMlSchema中扩展,如何?

时间:2010-02-16 21:40:52

标签: xml xsd

我编写了一个类似下面的XMLSchema。这个想法是baseContainer只允许一些标签,而fullContainer允许baseContainer中的所有标签+其他一些标签。标签可以按任何顺序排列,并且可以有多个标签。在我的真实示例中,有更多标记,因此这种编写XMLSchema的方法往往变得庞大且非结构化。我想使用XMLSchema扩展标记来构建文档,但它不能像我期望的那样工作。

提前致谢:)

<complexType name="baseContainer">
  <sequence minOccurs="0" maxOccurs="unbounded">
    <choice minOccurs="0" maxOccurs="1">
      <element ref="w:aTag0"/>
      <element ref="w:aTag1"/>
      <element ref="w:aTag2"/>
    </choice>
  </sequence>
</complexType>

<complexType name="fullContainer">
  <sequence minOccurs="0" maxOccurs="unbounded">
    <choice minOccurs="0" maxOccurs="1">
      <element ref="w:aTag0"/>
      <element ref="w:aTag1"/>
      <element ref="w:aTag2"/>
      <element ref="w:aTag3"/>
      <element ref="w:aTag4"/>
    </choice>
  </sequence>
</complexType>

我试过这个:

<complexType name="fullContainer">
  <complexContent>
    <extension base="w:baseContainer">
      <sequence minOccurs="0" maxOccurs="unbounded">
        <choice minOccurs="0" maxOccurs="1">
          <element ref="w:aTag3"/>
          <element ref="w:aTag4"/>
        </choice>
      </sequence>
    </extension>
  </complexContent>
</complexType>

1 个答案:

答案 0 :(得分:0)

据我所知,xml-schema中不可能有你想要的东西。 您可以扩展(或限制)已定义的类型。但是你无法扩展选择元素。