1
我有一个XML模式,我知道元素必须有特定的子元素,但我不知道该子元素的深度。看看下面的例子XML:使用XML Schema保证未知深度的子元素
<node id="top">
<node id="inner">
<event/>
</node>
</node>
<node id="top">
<event/>
</node>
唯一的要求我是一个<event>
元素必须是<node id="top">
元素的后代,但我不知道会发生什么深度它。换句话说,在顶部<node id="top">
和<event>
元素之间可以有任何数量的<node id="inner">
元素。在上面的例子中,每个在模式中都是有效的。我尝试的解决方案是:
<xs:element name="node">
<xs:complexType>
<xs:sequence>
<xs:element name="node" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="event"/>
</xs:sequence>
<xs:attribute name="id" fixed="inner"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:attribute name="id" fixed="top"/>
</xs:element>
但是,正如预期的,这并没有考虑到许多<node id="top">
元素之后可能发生的<node>
元素的“深度”。
看起来像这样大多是重复的。这个问题的简单答案是你必须指定maxOccurs =“unbounded”来获得未知的递归深度。 – smaccoun 2013-03-08 21:55:44