模式中是否有方法来指示由元素的开放或闭合属性确定的属性需求。例如,我有一个元素,如果打开没有要求属性'测试',但是如果它关闭它是必需的。基于开放/关闭元素的XSD限制
<element name="employee" >
blah!
</element>
确定
<element name="employee" />
故障 - 属性 '测试' 必需的。
模式中是否有方法来指示由元素的开放或闭合属性确定的属性需求。例如,我有一个元素,如果打开没有要求属性'测试',但是如果它关闭它是必需的。基于开放/关闭元素的XSD限制
<element name="employee" >
blah!
</element>
确定
<element name="employee" />
故障 - 属性 '测试' 必需的。
我猜你正在使用“打开”来表示元素有一个文本节点的孩子,“闭”意味着它没有。所以你说的元素应该有一个文本节点的孩子或属性,但不是两个(?),而不是两个。
这被归类为共现约束,无法在XSD 1.0中完成。它可以用XSD 1.1中的断言来完成。
<xs:element name="employee" type="...">
<xs:assert test="string(.) or @name"/>
</xs:element>
当前Xerces和Saxon支持XSD 1.1。
不,没有办法做到这一点。 (我会引用一个参考文献,但很难引用非功能!)
一般来说,这是超出XSD提供的步骤;在极少数情况下(如IDREF),它是否提供了通过引用另一个数据来验证一个数据的方法。 XSD 1.1提供了一些新的assertion support,它们可以满足您的需求,但规范仅仅是此时的工作草案。