在架构级别可以强制使用不同名称的两个属性的唯一值吗?
<xs:complexType name="exampleType">
<xs:attribute name="first" type="xs:integer" use="required"/>
<xs:attribute name="second" type="xs:integer"/>
</xs:complexType>
如果first
为1,则second
需要为其他值。
编辑:我使用的是xsd 1.0。
答案 0 :(得分:4)
正如我在评论中所说,只有first
和second
是元素(非属性)才有效。 |
xpath运算符就像一个节点联合。
<xs:element name="exampleElement" type="exampleType">
<xs:unique name="firstAndSecondDifferent">
<xs:selector xpath="first | second" />
<xs:field xpath="." />
</xs:unique>
</xs:element>
<xs:complexType name="exampleType">
<xs:sequence>
<xs:element name="first" type="xs:integer" />
<xs:element name="second" type="xs:integer" minOccurs="0" />
</xs:sequence>
</xs:complexType>
以下元素有效(first
和second
具有不同的值):
<exampleElement>
<first>1</first>
<second>5</second>
</exampleElement>
以下元素有效(不存在second
元素):
<exampleElement>
<first>1</first>
</exampleElement>
以下元素无效(first
和second
具有相同的值):
<exampleElement>
<first>1</first>
<second>1</second>
</exampleElement>
这不能用属性来完成,因为selector xpath
不允许使用属性,因此"@first | @second"
它不是选择器的xpath属性的有效值。