0

我想创建一个 XML 模式,该模式强制标头后跟几个项目中的任何一个。换句话说,这是有效的。 <header>必须始终是第一项,但随后 A 和 B 可以按任意顺序排列。

<root>
  <header/>
  <A/>
  <B/>
  <A/>
  <B/>
</root>

我的理解是,我可以允许 A 和 B 以任何顺序排列以下。

<xs:element name="root">
  <xs:complexType>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="A"/>
      <xs:element ref="B"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

但是我如何强制第一个元素成为<header>

4

1 回答 1

0

组可以嵌套在内容模型中,就像括号表达式可以嵌套在正则表达式中一样。在外部级别,您需要一个header元素,然后是AB元素的混合。所以使用 anxs:sequence来指定该序列。

<xs:complexType>
  <xs:sequence>
    <xs:element ref="root"/>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="A"/>
      <xs:element ref="B"/>
    </xs:choice>
  </xs:sequence>
</xs:complexType>
于 2013-09-02T02:28:05.370 回答