xs:key

(Auszug aus "XML Schema" von Eric van der Vlist)

Definition eines Schlüssels.

<xs:key
    id = xs:ID
    name = xs:NCName
    {beliebige Attribute mit einem Nicht-Schema-Namensraum}
    >
    Content: ((xs:annotation?), (xs:selector, xs:field+))
</xs:key>

Kann auftreten innerhalb von: xs:element (innerhalb von xs:all), xs:element (Verweis oder lokale Definition), xs:element (globale Definition)

Beschreibung

xs:key wird verwendet, um einfache oder zusammengesetzte Schlüssel zu definieren, die jedes Element einer ausgewählten Liste von Subelementen im Bereich eines Wurzelelements eindeutig identifizieren.

xs:key und xs:unique sind einander sehr ähnlich. Genau wie mit xs:unique definierte Bedingungen sind die mit xs:key definierten Schlüssel im Geltungsbereich ihres Wurzelelements einmalig und können durch xs:keyref referenziert werden. Der einzige Unterschied zwischen xs:key und xs:unique besteht darin, daß der Schlüssel für jedes der Elemente in der Auswahlliste definiert sein muß, während eindeutige Bezeichner für Elemente in der Auswahlliste undefiniert sein dürfen.

Das Wurzelelement für den Schlüssel ist das Element, in dem der Schlüssel definiert ist. Der Ort des Wurzelelements muß sorgfältig gewählt werden, da die Einzigartigkeit des Schlüssels nur innerhalb der Knotenelemente geprüft wird, die die Kinder dieses Wurzelelements sind. Wenn ein Wurzelelement, das mehrfach in einem Dokument auftritt, angegeben wird, besteht die Möglichkeit, lokale Schlüssel zu definieren, die nur innerhalb des Bereichs eindeutig sind, der jeweils unterhalb des einzelnen Auftretens dieses Wurzelelements liegt. Wenn ein Schlüssel innerhalb eines Dokuments global ist, kann es weniger fehleranfällig sein, das Dokumentenelement als Wurzel zu verwenden.

Der Beitrag von xs:key zum PSVI ist eine Knotentabelle in jedem Vorkommen des Wurzelelements, das die Liste der Schlüsselsequenzen für dieses Wurzelelement enthält. Der Geltungsbereich dieser Knotentabellen ist auf das Wurzelelement begrenzt, in dem sie enthalten sind, sowie auf dessen Ahnen. Dieser Geltungsbereich wird verwendet, um das Verhalten der Schlüsselreferenzen zu bestimmen, und wirkt sich auf die Auswahl des Wurzelelements des Schlüssels aus, wenn der Schlüssel referenziert wird (siehe xs:keyref).

Einschränkungen

Diese XPath-basierten Konstruktionen folgen nicht den objektorientierten, namensraumfähigen allgemeinen Grundgedanken von W3C XML Schema. Die XPath-Ausdrücke werden unabhängig vom Inhaltsmodell des Elements angegeben, und die Bedingungen für die Elemente aller möglichen Namensräume müssen in dem Schema für den Namensraum des Wurzelelements angegeben werden, das die Schlüsselbedingung enthält.

Beispiel

<xs:element name="library">
    <xs:complexType>
        .../...
    </xs:complexType>
    <xs:key name="book">
        <xs:selector xpath="book"/>
        <xs:field xpath="isbn"/>
    </xs:key>
</xs:element>

Attribute

id
Element-ID laut W3C XML Schema.

name
Der Name des Schlüssels.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML Schema bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2003 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML Schema" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de