指定屬性或項目值 (或值集合) 必須是指定範圍內的索引鍵。索引鍵範圍是執行個體文件中的包含項目。索引鍵表示資料在指定範圍內必須是唯一的、非 Nill 的,而且會永遠表示。
<key
id = ID
name = NCName
{any attributes with non-schema Namespace}...>
Content: (annotation?, (selector, field+))
</key>
屬性
id
這個項目的 ID。id 值必須是型別 ID,且在包含此項目的文件中是唯一的。選擇性項目。
name
key 項目的名稱。名稱必須是如 XML 命名空間規格中定義的無冒號名稱 (NCName)。名稱在識別條件約束集中必須是唯一的。
必要項目。
項目資訊
發生次數 |
無限制 |
父項目 |
|
內容 |
備註
key 項目必須依序包含下列項目。
selector |
selector 項目包含指定一組項目範圍的 XML 路徑語言 (XPath) 運算式,欄位指定的值在這個範圍內必須是唯一值。 一定要有一個 (而且只有一個) selector 項目。 |
field |
每一個 field 項目包含 XPath 運算式。其指定的值 (屬性或項目值) 在 selector 項目中指定的項目集中必須是唯一的。 如果有多個 field 項目,這些 field 項目的組合必須是唯一的。在此情況下,單一 field 項目的值在選取的項目範圍中可能是,也可能不是唯一的,但是所有欄位的組合必須是唯一的。 一定要有一個或多個 field 項目。 |
範例
下列範例定義了對應至這個結構描述中之 key 項目的 keyref 項目。
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace1"
xmlns:r="namespace1"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="A" type="r:A" maxOccurs="unbounded">
<xs:keyref name="dummy" refer="r:pNumKey">
<xs:selector xpath="part"/>
<xs:field xpath="@ref-number"/>
</xs:keyref>
</xs:element>
<xs:element name="B" type="r:B"/>
</xs:sequence>
</xs:complexType>
<xs:key name="pNumKey">
<xs:selector xpath="r:B/r:part"/>
<xs:field xpath="@key-number"/>
</xs:key>
</xs:element>
<xs:complexType name="A">
<xs:sequence>
<xs:element name="part" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ref-number" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="B">
<xs:sequence>
<xs:element name="part" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="key-number" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
輸入:key.xml
<root xmlns="namespace1">
<A>
<!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
<part ref-number="1"/>
</A>
<A>
<!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
<part ref-number="2"/>
</A>
<B>
<part key-number="1"/>
<part key-number="2"/>
<part key-number="3"/>
</B>
</root>
其他資源
如需詳細資訊,請參閱<W3C XML 結構描述第一部:結構建議事項>(英文),網址為:www.w3.org/TR/2001/REC-xmlschema-1-20010502/#element-all。