所以,我想编写一个 XSD,检查元素列表是否包含特定的必需元素,但除了它们之外,在列表的任何位置都允许任意数量的其他元素。有办法做到这一点吗?我在这里找到了当附加元素出现在末尾时如何处理这种情况:
但我想允许他们在任何地方。 (必需)元素的顺序与我无关。如果可以通过检查订单来做到这一点,很好,但这不是必需的。
例如,我想检查我的 XML 是否包含以下标签:
<HEAD>
<thing1>Str123</thing1>
<thing2>Str123</thing2>
<thing3>Str123</thing3>
</HEAD>
但是
HEAD
元素还应该能够在任何位置包含任何其他元素,例如:
<HEAD>
<thing1>Str123</thing1>
<thing2>Str123</thing2>
<thing4>Str123</thing4>
<thing3>Str123</thing3>
<thing5>Str123</thing5>
</HEAD>
我尝试将
<xsd:all>
与里面的<xsd:any>
结合起来,但这似乎不允许......
XSD 1.1 经常给出答案:
xs:openContent mode="interleave"
。如果您的 XSD 处理器不支持 1.1(这很可能),请向您的供应商投诉并寻找其他产品。