枚举值的XSD验证

时间:2011-04-08 07:37:46

标签: xml validation xsd

是否可以将元素值的出现限制在指定的次数? e.g:

<sample>
   <values>
       <value>SAMPLE1</value>
       <value>SAMPLE1</value>
   </values>
</sample>

可能的值为“SAMPLE1”,“SAMPLE2”,“SAMPLE3”。最多可以发生三次,但每个值必须是唯一的。

在示例中,“SAMPLE1”出现两次,这是不正确的。是否可以在XSD中对此进行限制?

2 个答案:

答案 0 :(得分:0)

您可以使<value>在特定范围内具有唯一性(例如在<values>中)。这是一个例子:

<xs:element name="sample" type="SampleType">
    <xs:unique name="valueKey">
        <xs:selector xpath="*/values"/>
        <xs:field xpath="value"/>
    </xs:unique>
</xs:element>

使用selector元素定义范围,并使用field定义范围内哪个元素应该是唯一的。

有关详细信息,请参阅documentation

答案 1 :(得分:0)

如果数字为0或1,您可以将值限制为“指定的次数”:使用Oleg所描述的xs:unique。如果你想要一个不同的数字,你需要xs:assert来自XSD 1.1。