简单的问题:我有两个不同的元素,它们共享相同的属性。如何在两个不同的元素上实现此属性的唯一性?
示例XML代码段:
<owners>
<person id="1"/>
<company id="2"/>
</owners>
在上面的代码片段中,我希望id
的值在person
和company
中是唯一的。因此该人和公司没有相同的id
值。
答案 0 :(得分:2)
如果您确定person/@id
和company/@id
在所有所有元素中都是唯一的,只需将这些@id
属性键入为xs:ID
。 / p>
如果您确实要求将唯一性的范围限制为@id
中这两个元素的owners
,请在xs:unique
中将owners
与{{1 }}(共xs:selector/@xpath
:
person|company
如果唯一性的范围扩展到实际层次结构中较高的元素,请提高<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="owners">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence/>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="company" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence/>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="personCompanyIdUniqueness">
<xs:selector xpath="person|company"/>
<xs:field xpath="@id"/>
</xs:unique>
</xs:element>
</xs:schema>
元素并相应地调整xs:unique
。