Xsd 带有标题的XML模式,然后选择项

Xsd 带有标题的XML模式,然后选择项,xsd,Xsd,我想创建一个XML模式,强制在标题后面加上几个项目中的任何一个。换句话说,这是有效的必须始终是第一项,但A和B可以是任意顺序 <root> <header/> <A/> <B/> <A/> <B/> </root> 我的理解是,我可以允许A和B的顺序如下 <xs:element name="root"> <xs:complexType> <xs:

我想创建一个XML模式,强制在标题后面加上几个项目中的任何一个。换句话说,这是有效的<代码>必须始终是第一项,但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>


但是如何强制第一个元素是

组可以嵌套在内容模型中,就像括号中的表达式可以嵌套在正则表达式中一样。在外部级别,您需要一个
标题
元素,后跟
a
B
元素的组合。因此,使用
xs: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>