说我有一个元素,称之为<A>
。 <A>
可以包含<B>
和<C>
的子类型。现在 - 这是扭曲。任何数量的<B>
和<C>
子项都可以按<A>
的顺序存在。
例如:
<A>
<C>
<C>
<B>
<C>
<B>
<B>
<C>
...
</A>
是否有符合此要求的架构规则?似乎“all”会起作用,如果我可以把maxOccurs =“unbounded”,但我猜这不合法。
答案 0 :(得分:28)
回答我自己的问题 - 看起来像trang(http://www.thaiopensource.com/relaxng/trang.html)给了我一个答案:
<xs:element name="A">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="B"/>
<xs:element ref="C"/>
</xs:choice>
</xs:complexType>
</xs:element>
非常酷!
答案 1 :(得分:1)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root" type="root"/>
<xs:complexType name="root">
<xs:choice minOccurs="0">
<xs:element name="a"/>
</xs:choice>
</xs:complexType>
</xs:schema>
此架构验证
<root>
</root>
但如果省略minOccurs="0"
的{{1}},则不会。
验证
<xs:choice>
没有<root>
<a/>
</root>
。