xs:field

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

Definition des Feldes, das für eine Eindeutigkeitsbedingung verwendet werden soll.

<xs:field
    id = xs:ID
    xpath = xs:token
    {beliebige Attribute mit einem Nicht-Schema-Namensraum}
    >
    Content: (xs:annotation?)
</xs:field>

Kann auftreten innerhalb von: xs:key, xs:keyref, xs:unique

Beschreibung

xs:field wird verwendet, um den Ort der Felder festzulegen, für die eine Eindeutigkeitsbedingung bzw. der Verweis auf ein solche geprüft wird.

Die Felder sind Elemente oder Attribute, die durch relative XPath-Ausdrücke (d.h. xpath-Attribute) identifiziert werden, die bezüglich des von dem xs:selector-Element selektierten Knotens ausgewertet werden.

Kombinierte Schlüssel können formuliert werden, indem man mehrere Felder unterhalb eines der Elemente xs:unique, xs:key bzw. xs:keyref definiert.

Einschränkungen

Das xpath-Attribut verwendet eine einfache Untermenge von XPath 1.0. Das Motiv der W3C XML Schema Working Group für diese Festlegung ist zum einen die Erleichterung der Implementierung von Schema-Prozessoren und zum anderen, den Pfad so zu beschränken, daß er innerhalb des Geltungsbereichs des aktuellen Elements bleibt.

Diese Untermenge ist darauf beschränkt, nur die XPath-Achsen child, attribute, self und descendant-or-self in ihren abgekürzten Schreibweisen zu verwenden, ohne irgendeinen Test in einem der XPath-Ortungsschritte zuzulassen und ohne eine der XPath-Funktionen zu verwenden. Sie ist mit der für xs:selector definierten Untermenge identisch, außer daß Attribute bei xs:field erlaubt, bei xs:selector jedoch verboten sind.

Die in der W3C Recommendation angegebene formale erweiterte BNF (Backus-Naur-Form) lautet wie folgt:

Field ::= Path ( ’|’ Path )* Path ::= (’.//’)? ( Step ’/’ )* ( Step | ’@’ NameTest ) Step ::= ’.’ | NameTest NameTest ::= QName | ’*’ | NCName ’:’ ’*’

Wenn kombinierte Schlüssel definiert werden, müssen die Knotenmengen, die von den einzelnen Feldern identifiziert werden, ein einziges Mal pro Iteration des Locators auftreten. Das bedeutet mit W3C XML Schema für Strukturen wie die folgende:

<sect num="1">
    <sub-sect num="1"> Unterabschnitt 1.1 </sub-sect>
    <sub-sect num="2"> Unterabschnitt 1.2 </sub-sect>
</sect>
<sect num="1">
    <sub-sect num="3"> Unterabschnitt 1.3 </sub-sect>
    <sub-sect num="4"> Unterabschnitt 1.4 </sub-sect>
</sect>

daß keine kombinierten Schlüssel mit mehreren Ebenen über die num-Attribute von sect und sub-sect definiert werden können. Der Locator würde nämlich über das Element sect iterieren müssen, und das Attribut num des Elements sub-sect nimmt dann mehrere Werte für jede Iteration an.

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.

xpath
Relativer XPath-Ausdruck, der das Feld (bzw. eines der Felder) identifiziert, aus dem die Bedingung für den Schlüssel, den Schlüsselverweis oder die Eindeutigkeit besteht.

   

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