Kapitel 2.10 · XML-Einführung
Einfache Typen
Weitere einfache Typen können durch Einschränkung, Vereinigung und Listenbildung aus diesen vordefinierten Typen gebildet werden. Zur Einschränkung stehen so genannte Facetten zur Verfügung, mit denen Bedingungen an die Werte des Datentyps formuliert werden können:
- Direkte Unter-/Obergrenzen für einen geordneten Wertebereich:
minInclusive,minExclusive,maxInclusive,maxExclusive. - Längenbeschränkungen für Zeichenketten (aus Zeichen oder Hexadezimalzeichen), Namen und URI: Die genaue Länge wird durch
lengthfestgelegt. Alternativ kann eine Minimal- und/oder Maximallänge überminLengthbzw.maxLengthdefiniert werden. - Längenbeschränkungen für Listen: Dort beschränken
length,minLengthundmaxLengthdie Anzahl der zulässigen Listenelemente entsprechend. - Längenbeschränkungen für Datentypen, die von
decimalabgeleitet sind:totalDigitsundfractionDigitsbeschränken die Gesamtzahl von Dezimalstellen und die Anzahl der Nachkommastellen. Trotz des irreführenden Namens legttotalDigitsnicht die genaue Stellenzahl, sondern die maximale Stellenzahl fest. - Aufzählung der erlaubten Werte (
enumeration). - Die Angabe eines regulären Ausdrucks, dem der Wert genügen muss (
pattern): Für diesen regulären Ausdruck ist eine mächtige Syntax vorgesehen, die genaue Häufigkeitsangaben, Zeichenklassen etc. vorsieht. Diese entspricht im Wesentlichen der aus der Sprache Perl bekannten Syntax. Der Anhang enthält darüber hinaus eine Übersicht über die Spezialsymbole für die Anwendung in regulären Ausdrücken für XML Schema und XQuery. - Die Facette
whiteSpacebestimmt, wie eine Zeichenkette zu behandeln ist, bevor die Validierung bezüglich des Datentyps vorgenommen wird. BeiwhiteSpace=replacewerden alle Tabulator- und Zeilenende/Wagenrücklauf-Zeichen aus der Repräsentation durch Leerzeichen ersetzt, beiwhiteSpace=collapseaußerdem noch führende und abschließende Leerzeichen unterdrückt und Folgen von Leerzeichen auf ein einziges reduziert, währendwhiteSpace=preserveden Wert unverändert übernimmt.
Das folgende Beispiel zeigt die Definition eines einfachen Typs Wassertemperatur auf Basis des vordefinierten Typs decimal. Das Präfix xs: steht dabei für den Namensraum von XML Schema www.w3.org/2001/XMLSchema. Die Temperatur soll zwischen 0 und 100 Grad liegen und auf höchstens zwei Nachkommastellen genau sein:
<xs:simpleType name="Wassertemperatur">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
<xs:minInclusive value="0.00"/>
<xs:maxInclusive value="100.00"/>
</xs:restriction>
</xs:simpleType>
Das zweite Beispiel zeigt die Verwendung der Facette pattern bei der Definition einer deutschen oder internationalen Telefonnummer mit Vorwahl:
<xs:simpleType name="Telefon_T">
<xs:restriction base="xs:string">
<xs:pattern
value="(((\+\+|00)[1-9][0-9]{0,2})|0)[1-9][0-9-]+"/>
</xs:restriction>
</xs:simpleType>
Die Zahl muss entweder mit einer Länderkennzahl (++ oder 00 gefolgt von einer Ziffer von 1 bis 9 und höchstens zwei weiteren Ziffern) oder einer 0 beginnen. Darauf muss eine Ziffer von 1 bis 9 folgen. Beliebig viele weitere Ziffern dürfen folgen.
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)