如何为xs:unique限制指定“复合键”?

时间:2013-10-29 22:15:03

标签: xml xsd

我的XSD中有以下约束:

<xs:unique name="optionValuesMustBeUnique">
    <xs:selector xpath="option"/>
    <xs:field xpath="option_values"/>
</xs:unique>

这适用于以下示例XML(不是整个doc,而是相关位):

<Option>
    <OptionType>Apparel Inseam</OptionType>
    <OptionValue>30</OptionValue>
</Option>
<Option>
    <OptionType>Waist Size</OptionType>
    <OptionValue>30</OptionValue>
</Option>

这种方法的问题是这些值一起有效 - 它们具有不同的类型。但是,因为我正在根据选项值进行选择,所以它会将它们显示为重复项。

是否有xs:unique限制来定义“复合键”?也就是说,通过选择两个字段并在我的XPATH选择器中连接它们来定义唯一性?

我只限于XPATH 1。

1 个答案:

答案 0 :(得分:2)

你很亲密。尝试使用多个xs:field子元素定义xs:unique。一个用于复合材料中的每个值。

<xs:unique name="optionValuesMustBeUnique">
    <xs:Selector xpath="option" />
    <xs:field xpath="option_value1" />
    <xs:field xpath="option_value2" />
</xs:unique>