我有一个 XML 模式,我知道一个元素必须有一个特定的子元素,但我不知道该子元素将存在的深度。以以下示例 XML 为例:
<node id="top">
<node id="inner">
<event/>
</node>
</node>
<node id="top">
<event/>
</node>
我唯一的要求是<event>
元素必须是元素的后代<node id="top">
,但我不知道它会在什么深度出现。换句话说,<node id="inner">
在顶部<node id="top">
和一个元素之间可以有任意数量的<event>
元素。在上面的示例中,这些中的每一个在架构中都是有效的。我尝试的解决方案是:
<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>
元素之后可能出现的许多元素“深度” <node id="top">
。