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

如何使用XSD枚举验证XML属性?,xml,xsd,xsd-validation,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验证做好准备?(我确实有两个以上的属性名称/值对)XSD使用嵌套实现您想要的(条件验证) 因此,虽然不能使用XSD使

我有以下XML序列

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

我想将
“a”
限制为一个值列表,如[x,y,z],而
“b”
限制为另一个列表,如[xx,yy,zz]

使用XSD可以做到这一点吗?如果可以,如何做到


如果这是不可能的,您建议如何更改XML格式以便为XSD验证做好准备?(我确实有两个以上的
属性
名称/值对)

XSD使用嵌套实现您想要的(条件验证)

因此,虽然不能使用XSD使一个属性的值以另一个属性的值为条件(as),但可以使用XSD使属性的值以元素本身为条件:

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

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

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


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

XSD使用嵌套实现您想要的(条件验证)

因此,虽然不能使用XSD使一个属性的值以另一个属性的值为条件(as),但可以使用XSD使属性的值以元素本身为条件:

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

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

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


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

谢谢,无论如何,通过发明另一个验证系统/工具来重新发明轮子不是一个好主意。如果可能的话,修复旧格式并准备好XSD要好得多。谢谢,无论如何,通过发明另一个验证系统/工具来重新发明轮子不是一个好主意。如果可能,修复旧格式并使其准备好XSD会更好。