嗨我有这样的xml:
<xml><fullname>
<name attrib="true"/>
<lastname1 attrib="false"/>
<lastname2 attrib="false"/></fullname></xml>
我需要创建一个模式来验证它,它只允许1个attrib值为“true”(其余的必须为false [attrib属性定义为xs:boolean]),所以我在元素fullname中添加了一个唯一的检查,如下所示:
<xs:unique name="attribcheck">
<xs:selector xpath="name|lastname1|lastname2"/>
<xs:field xpath="@attrib"/>
当然,它会检测到存在重复的“真实”,但它也会检测到重复的“假”.
有没有人知道是否有办法对应用唯一约束的值设置限制?这意味着我可以确保在任何给定时间只有其中一个是“真实的”
最佳答案
XML Schema 1.0不支持共现约束 – 您无法根据另一个元素的值表示某个元素的条件.
这将在XML Schema 1.1发生变化,但后者仅处于草案阶段并且仍在变化,并且在一段时间内不会得到广泛实施.
但是,如果您使用Saxon 9.2,它现在已初步支持XML Schema 1.1.请参阅feature grid以确定架构验证所需的版本.