XML Schema匹配以下(“all”,无界限maxOccurs?)

时间:2010-09-30 03:48:44

标签: xsd

说我有一个元素,称之为<A><A>可以包含<B><C>的子类型。现在 - 这是扭曲。任何数量的<B><C>子项都可以按<A>的顺序存在。

例如:

<A>
  <C>
  <C>
  <B>
  <C>
  <B>
  <B>
  <C>
  ...
</A>

是否有符合此要求的架构规则?似乎“all”会起作用,如果我可以把maxOccurs =“unbounded”,但我猜这不合法。

2 个答案:

答案 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>