我想创建一个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>
?
答案 0 :(得分:0)
组可以嵌套在内容模型中,就像括号表达式可以嵌套在正则表达式中一样。在外层,您需要header
元素,后跟混合的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>