基于另一个元素值限制元素发生的XML模式

时间:2011-09-20 16:55:57

标签: xml xsd

是否可以定义一个XML Schema,它根据另一个元素的值约束一个或多个元素的出现?

例如,在下面的XML中,当TYPE元素的值为“A”时,只能有一个ITEM_TYPE_1元素,但至少有两个ITEM_TYPE_2元素。

<ROOT>
    <TYPE>A</TYPE>
    <ITEM_TYPE_1 />
    <ITEM_TYPE_2 />
    <ITEM_TYPE_2 />
</ROOT>

相反,当TYPE元素的值为'B'时,必须至少有两个ITEM_TYPE_1元素,但只有一个ITEM_TYPE_2元素。

<ROOT>
    <TYPE>B</TYPE>
    <ITEM_TYPE_1 />
    <ITEM_TYPE_1 />
    <ITEM_TYPE_2 />
</ROOT>

不确定我是否尝试执行XML Schema无法处理的内容,因此感谢您的反馈。

1 个答案:

答案 0 :(得分:2)

不,XML Schema 1.0不支持这样的约束,其中依赖于元素或属性值。 XML Schema 1.1尚未被广泛采用,但通过assertions支持值约束。