“任何一个或多个这些元素但必须至少有一个”的 XML 模式构造

2024-04-29

我正在尝试设置类似于“序列”的模式的一部分,其中所有子元素都是可选的,但至少有一个元素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(使用前将#替换为@)

“任何一个或多个这些元素但必须至少有一个”的 XML 模式构造 的相关文章

随机推荐