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