Name
xs:key — Definition of a key.
Synopsis
<xs:key
id = xs:ID
name = xs:NCName
{any attributes with non-schema namespace}
>
Content: ((xs:annotation?), (xs:selector, xs:field+))
</xs:key>
May be included in: xs:element (within xs:all), xs:element (reference or local definition), xs:element (global definition)
Description
xs:key is used to define simple or compound keys
by unambiguously identifying each element of a selected list of
subelements within the scope of a root element.
xs:key is very similar to
xs:unique. Like the constraints defined with
xs:unique, keys defined with
xs:key are unique in the scope of their root
element and may be referenced by xs:keyref. The
only difference between xs:key and
xs:unique is the keys must be defined for each of
the elements in the selection list, while unique identifiers may be
undefined for elements in the selection list.
The root element for the key is the element in which the key is defined. The location of the root element must be carefully chosen since the unicity of the key is checked only within the node elements that are the key’s children. Defining a root element that has multiple occurrences within a document leaves the possibility to define local keys that are unique only in the scope of each occurrence of a document. When a key is global to a document, defining it using the document element as a root may cause it to be less error-prone.
The contribution of xs:key to the PSVI is a node table in each occurrence of the root key ...