我有以下 XML 序列
<property name="a" value="x" />
<property name="b" value="xx" />
我想限制"a"
为一个值列表,如 [ x, y, z] 和"b"
另一个列表,如 [xx, yy, zz]
是否可以使用 XSD 来做到这一点,如果可以的话?
如果这不可能,您建议如何更改 XML 格式以使其为 XSD 验证做好准备?(我确实有两个以上的property
名称/值对)
我有以下 XML 序列
<property name="a" value="x" />
<property name="b" value="xx" />
我想限制"a"
为一个值列表,如 [ x, y, z] 和"b"
另一个列表,如 [xx, yy, zz]
是否可以使用 XSD 来做到这一点,如果可以的话?
如果这不可能,您建议如何更改 XML 格式以使其为 XSD 验证做好准备?(我确实有两个以上的property
名称/值对)
XSD 使用嵌套来完成您想要的(条件验证)。
因此,虽然您不能使用 XSD 使一个属性的值以另一个属性的值为条件(正如Fyodor Soikin 在他的回答中所说),但您可以使用 XSD 使属性的值以元素本身为条件:
<propertyNameA value="x"/>
<propertyNameB value="xx"/>
在这种情况下,每个属性都是它自己的元素,每个“值”属性都有自己的枚举。
它为您提供了额外的好处,即能够限制您可以拥有的每个命名属性的数量,但缺点是您需要管理更多元素。
根据您的具体情况,以这种方式使用 XSD 可能是最佳选择,或者实现另一个可以执行所需名称/值验证的系统可能会更好。