Zurück zur Bibliothek

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

Wenn wir mit kritischem Blick unsere Bibliothek noch einmal ansehen, bemerken wir, daß wir die folgenden einfachen Datentypen verwendet haben:

<xs:element name="name" type="xs:string"/>
<xs:element name="qualification" type="xs:string"/>
<xs:element name="born" type="xs:date"/>
<xs:element name="dead" type="xs:date"/>
<xs:element name="isbn" type="xs:string"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="available" type="xs:boolean"/>
<xs:attribute name="lang" type="xs:language"/>

Wir haben das Glück, daß die Elemente born und dead ISO-8601-Datumsangaben sind. Die ISBN besteht aus Ziffern und einem Zeichen am Ende, das entweder eine Ziffer oder der Buchstabe »X« sein kann; sie wird daher als String dargestellt. Wir haben auch bei den Datentypen für die Attribute id, available und lang gute Arbeit geleistet. Die Entscheidung für den Typ xs:string bei den Elementen name und qualification ist jedoch strittiger. Sie treten im Instanzdokument wie folgt auf:

<name>
  Charles M. Schulz
</name>
                    .../...
<qualification>
  kühn, dreist und draufgängerisch
</qualification>

Diese Formatierung legt nahe, daß Whitespace wahrscheinlich nicht signifikant ist und deswegen zusammengefaßt werden sollte. Dies kann durch die Wahl des Datentyps xs:token anstelle von xs:string erreicht werden; das gleiche gilt für das Element title, das einfachen Inhalt hat, der von xs:string abgeleitet ist, der jedoch besser von xs:token abgeleitet wäre. Diese Änderung hat keinerlei Einfluß auf die Validierung durch unser Schema. Das Dokument wird dadurch jedoch präziser beschrieben, und zukünftige Ableitungen würden leichter auf xs:token als auf xs:string aufbauen. Der andere Datentyp, der besser hätte gewählt werden können, ist isbn, der als xs:NMTOKEN dargestellt werden kann. Das neue Schema wäre dann:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="name" type="xs:token"/>
   <xs:element name="qualification" type="xs:token"/>
   <xs:element name="born" type="xs:date"/>
   <xs:element name="dead" type="xs:date"/>
   <xs:element name="isbn" type="xs:NMTOKEN"/>
   <xs:attribute name="id" type="xs:ID"/>
   <xs:attribute name="available" type="xs:boolean"/>
   <xs:attribute name="lang" type="xs:language"/>
   <xs:element name="title">
      <xs:complexType>
         <xs:simpleContent>
            <xs:extension base="xs:token">
               <xs:attribute ref="lang"/>
            </xs:extension>
         </xs:simpleContent>
      </xs:complexType>
   </xs:element>
   <xs:element name="library">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="book" maxOccurs="unbounded"/>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
   <xs:element name="author">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="name"/>
            <xs:element ref="born"/>
            <xs:element ref="dead" minOccurs="0"/>
         </xs:sequence>
         <xs:attribute ref="id"/>
      </xs:complexType>
   </xs:element>
   <xs:element name="book">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="isbn"/>
            <xs:element ref="title"/>
            <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
         <xs:attribute ref="id"/>
         <xs:attribute ref="available"/>
      </xs:complexType>
   </xs:element>
   <xs:element name="character">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="name"/>
            <xs:element ref="born"/>
            <xs:element ref="qualification"/>
         </xs:sequence>
         <xs:attribute ref="id"/>
      </xs:complexType>
   </xs:element>
</xs:schema>

   

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