我的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。
答案 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>