xs:unique

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

Definition einer Eindeutigkeitsbedingung.

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

Kann auftreten innerhalb von: xs:simpleType (lokale Definition), xs:simpleType (globale Definition)

Beschreibung

xs:unique wird verwendet, um einfache oder zusammengesetzte Bedingungen zu definieren, die jedes Element einer ausgewählten Liste von Subelementen im Bereich eines Wurzelelements eindeutig identifizieren, sofern sie in dem Element vorkommen.

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

Das Wurzelelement für die Bedingung ist das Element, in dem die Bedingung definiert ist. Der Ort des Wurzelelements muß sorgfältig gewählt werden, da die Einzigartigkeit der Bedingung 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 Bedingungen zu definieren, die nur innerhalb des Bereichs eindeutig sind, der jeweils unterhalb des einzelnen Auftretens dieses Wurzelelements liegt. Wenn eine Bedingung innerhalb eines Dokuments global ist, kann es weniger fehleranfällig sein, das Dokumentenelement als Wurzel zu verwenden.

Der Beitrag von xs:unique 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 beschränkt, in dem sie enthalten sind, sowie auf dessen Ahnen. Dieser Geltungsbereich wird verwendet, um das Verhalten der Schlüssel-Referenzen zu bestimmen, und wirkt sich auf die Auswahl des Wurzelelements der Bedingung aus, wenn die Bedingung 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:unique name="book">
        <xs:selector xpath="book"/>
        <xs:field xpath="isbn"/>
    </xs:unique>
</xs:element>

Attribute

id
Element-ID laut W3C XML Schema.

name
Name der Eindeutigkeitsbedingung.

   

<< 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