我正在尝试设置类似于“序列”的模式的一部分,其中所有子元素都是可选的,但至少有一个元素must存在,并且可能不止一个。
我尝试执行以下操作,但 XMLSpy 抱怨“内容模型包含无法唯一确定的元素 和 。”:
<xs:choice>
<xs:sequence>
<xs:element name="DateConstant"/>
<xs:element name="TimeConstant"/>
</xs:sequence>
<xs:element name="DateConstant"/>
<xs:element name="TimeConstant"/>
</xs:choice>
这可以做到吗(如果可以的话,如何做到)?
一些澄清:
我只想允许每个元素之一具有相同的名称。可以有一个“DateConstant”和/或一个“TimeConstant”,但不能同时存在两个。
Gizmo 的答案符合我的要求,但对于大量元素来说这是不切实际的。
赫斯特的答案允许两个或多个同名元素,这是我不想要的。
尝试这个:
<xs:choice>
<xs:sequence>
<xs:element name="Elem1" />
<xs:element name="Elem2" minOccurs="0" />
<xs:element name="Elem3" minOccurs="0" />
</xs:sequence>
<xs:sequence>
<xs:element name="Elem2" />
<xs:element name="Elem3" minOccurs="0" />
</xs:sequence>
<xs:element name="Elem3" />
</xs:choice>
这样做,您强制选择第一个元素,然后其余元素是可选的,或者第二个元素,其余元素是可选的,或者第三个元素。
我希望这应该能达到你想要的效果。
当然,您可以将子序列放入组中,以避免在您意识到错过了一个元素时在每个序列中重复一个元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)