如何使用XSD枚举验证XML属性?

时间:2010-06-14 13:19:56

标签: xml xsd xsd-validation

我有以下XML序列

<property name="a"  value="x" />
<property name="b"  value="xx" />

我想将"a"限制为值列表,例如[x,y,z]和"b"到另一个列表,例如[xx,yy,zz]

是否可以使用XSD执行此操作,如果是这样的话?

如果无法做到这一点,您如何建议更改XML格式以便为XSD验证做好准备? (我确实有两个以上的property名称/值对)

1 个答案:

答案 0 :(得分:1)

XSD使用嵌套完成您想要的(条件验证)。

因此,虽然您不能使用XSD使一个属性的值以另一个属性的值为条件(如Fyodor Soikin says in his answer),但您可以使用XSD使属性的值以元素本身为条件:

<propertyNameA value="x"/>
<propertyNameB value="xx"/>

在这种情况下,每个属性都是它自己的元素,每个“value”属性都有自己的枚举。

它为您提供了额外的好处,即能够限制您可以拥有的每个命名属性的数量,但缺点是您需要管理更多元素。

根据您的具体情况,使用XSD这种方式可能是最佳选择,或者可能更好地实现另一个可以进行所需名称/值验证的系统。