xs:ID und xs:IDREF

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

Das erste Verfahren zur Beschreibung von Bezeichnern und Verweisen mit W3C XML Schema ist von den DTDs von XML ererbt. Wir haben dies bereits unter Erzeugung einfacher Datentypen besprochen: Die Datentypen xs:ID, xs:IDREF und xs:IDREFS, die in W3C XML Schema eingeführt wurden, ahmen das Verhalten der Attributtypen ID, IDREF und IDREFS der DTDs von XML nach.

Im Gegensatz zu ihren DTD-Gegenstücken können diese einfachen Typen verwendet werden, um sowohl Elemente als auch Attribute zu beschreiben, sie erben jedoch die anderen Beschränkungen von den DTDs: Ihr lexikalischer Raum ist derselbe wie der unqualifizierte XML-Name (als Datentyp xs:NCName bekannt), und sie sind für das Dokument global. Das bedeutet, daß man einen Autor und eine Buchfigur innerhalb eines einzigen Dokuments nicht über denselben ID-Wert identifizieren darf.

Die Beschränkung für den lexikalischen Raum kann uns oft daran hindern, einen existierenden Knoten als Bezeichner zu verwenden. In unserer Bibliothek werden wir beispielsweise eine ISBN nicht als ID verwenden können, da ein xs:NCName nicht mit einer Ziffer beginnen kann und Whitespace verboten ist. Wir müssen daher vollständig beliebige IDs erzeugen und ihre Werte aus existierenden Knoten ableiten. Die ISBN »3810518883« kann zum Beispiel verwendet werden, um die ID isbn-3810518883 zu erzeugen, und der Name »Charles M. Schulz« kann zu au-Charles-M.-Schulz werden. Ein Präfix (isbn, au usw.) hinzuzufügen ist auch ein Weg, um Kollisionen zwischen IDs, die für verschiedene Elementtypen verwendet werden, zu vermeiden.

Diese IDs können verwendet werden, um Attribute oder aber Elemente zu definieren; die Recommendation erinnert uns jedoch daran, daß sie nur für Attribute verwendet werden sollten, wenn wir die Kompatibilität mit den IDs und IDREFs von XML 1.0 aufrechterhalten wollen. In beiden Fällen (Elemente wie Attribute) wird der Beitrag zum PSVI in ähnlicher Weise durch eine »ID/IDREF-Tabelle« geleistet; außer um Kompatibilität mit diesem Feature so, wie es bisher in XML 1.0 definiert war, beizubehalten, gibt es keinen Grund, warum man ID, IDREF und IDREFS zur Definition von Elementen vermeiden sollte.

Um zu zeigen, wie diese beiden Stile miteinander kombiniert werden können, kann ein book-Element unserer Bibliothek beispielsweise so geschrieben werden:

<book identifier="b3810518883">
    <isbn>
        3810518883
    </isbn>
    <title>
        Auf den Hund gekommen
    </title>
    <author-ref ref="au-Charles_M._Schulz"/>
    <character-refs>
        ch-Peppermint_Patty ch-Snoopy ch-Schroeder ch-Lucy
    </character-refs>
</book>

Das book-Element wird durch das Attribut identifier (ID) identifiziert. Es verweist auf seinen Autor mit Hilfe des Attributs ref (IDREF) eines author-ref-Elements und außerdem auf eine Whitespace-getrennte Liste von Buchfiguren unter Verwendung eines Elements namens character-refs (IDREFS). Das Schema-Stück für dieses Element kann wie folgt sein:

<xs:element name="book">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="isbn" type="xs:NMTOKEN"/>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="author-ref">
                <xs:complexType>
                    <xs:attribute name="ref" type="xs:IDREF" use="required"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="character-refs" type="xs:IDREFS"/>
        </xs:sequence>
        <xs:attribute name="identifier" type="xs:ID" use="required"/>
    </xs:complexType>
</xs:element>

   

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