我有以下 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 可能是最佳选择,或者实现另一个可以执行您所需的名称/值验证的系统可能会更好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top