schema验证包含布尔值的xml

时间:2009-10-05 15:19:07

标签: xml validation schema

嗨,我有一个像这样的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"/>

当然,它会检测到存在重复的“true”,但它也会检测到重复的“false”。 有没有人知道是否有办法对应用唯一约束的值设置限制?这意味着我可以确保在任何给定时间只有其中一个是“真实的”

1 个答案:

答案 0 :(得分:2)

XML Schema 1.0不支持共现约束 - 您无法根据另一个元素的值表示某个元素的条件。

这将在XML Schema 1.1中发生变化,但后者仅处于起草阶段且仍在变化,并且在一段时间内不会广泛实施。

但是,如果您使用Saxon 9.2,它现在已经初步支持XML Schema 1.1。请参阅feature grid以确定架构验证所需的版本。