• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

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 length festgelegt. Alternativ kann eine Minimal- und/oder Maximallänge über minLength bzw. maxLength definiert werden.
  • Längenbeschränkungen für Listen: Dort beschränken length, minLength und maxLength die Anzahl der zulässigen Listenelemente entsprechend.
  • Längenbeschränkungen für Datentypen, die von decimal abgeleitet sind: totalDigits und fractionDigits beschränken die Gesamtzahl von Dezimalstellen und die Anzahl der Nachkommastellen. Trotz des irreführenden Namens legt totalDigits nicht 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 whiteSpace bestimmt, wie eine Zeichenkette zu behandeln ist, bevor die Validierung bezüglich des Datentyps vorgenommen wird. Bei whiteSpace=replace werden alle Tabulator- und Zeilenende/Wagenrücklauf-Zeichen aus der Repräsentation durch Leerzeichen ersetzt, bei whiteSpace=collapse außerdem noch führende und abschließende Leerzeichen unterdrückt und Folgen von Leerzeichen auf ein einziges reduziert, während whiteSpace=preserve den 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 http://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)

<< zurückvor >>