将XSD元素的子级限制为某种complexType

时间:2011-07-22 07:17:07

标签: xml xsd xml-namespaces

我的XML文档结构如下:

<document>
    <!-- heading is an element of complexType ns:blockType -->
    <heading>
    </heading>

    <!-- so is paragraph -->
    <paragraph>
    </paragraph>

    <!-- foo, in another namespace, is also of complexType ns:blockType -->
    <otherNS:foo>
    </otherNS:foo>
</document>

如何限制document的孩子只属于blockType类型?

1 个答案:

答案 0 :(得分:0)

您可以定义

<xs:element name="block" abstract="true" type="ns:blockType"/>

<xs:complexType name="headingType">
  <xs:sequence>
    <xs:element ref="block" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>

这允许标题包含“block”的替换组中的任何元素,并且如果元素的类型为ns:blockType,则该元素只能位于此替换组中。

这不是你要求的,但它是我能得到的最接近的。