Einschränkungen
Mit Hilfe des restriction
-Elements können Sie in XSD Einschränkungen definieren. Einschränkungen beziehen sich
dabei immer auf einen bereits bestehenden Datentyp (dies kann ein selbst definierter Datentyp oder aber auch einer der
vordefinierten Basisdatentypen sein). Dieser wird über das Attribut base
festgelegt. Dem restriction
-Element
können dann verschiedene Elemente untergeordnet werden (dazu gleich mehr), um die eigentlichen Einschränkungen festzulegen.
In diesem Thema lernen Sie lediglich die Einschränkung von einfachen Typen kennen. Im Thema Ableitung
gehen wir dann noch auf die Einschränkung von komplexen Datentypen ein.
Länge
Die Elemente minLength
, maxLength
und length
werden dazu verwendet, die Länge von
Zeichenketten oder Listen festzulegen. Mit den Elementen minLength
und maxLength
können Sie
eine Unter- und Obergrenze für die Zeichenkette oder Liste festlegen. Das length
-Element legt die
explizite Länge fest, d. h. die Zeichenkette oder Liste muss exakt so viele Zeichen bzw. Einträge haben. Die Elemente
minLength
, maxLength
und length
sind, so wie die anderen Einschränkungs-Elemente auch,
einteilig, wobei der Wert (in diesem Fall die Länge) für die Einschränkung mit dem Attribut value
festgelegt wird.
<xs:element name="vorname"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="2" /> <xs:maxLength value="50" /> </xs:restriction> </xs:simpleType> </xs:element>
Wertebereich
Für Zahlen können Sie mit den Elementen minInclusive
(Wert muss größer oder gleich dem definierten Wert sein),
minExclusive
(Wert muss größer als der definierte Wert sein), maxInclusive
(Wert muss kleiner oder
gleich dem definierten Wert sein) und maxExclusive
(Wert muss kleiner als der definierte Wert sein) einen
zulässigen Wertebereich festlegen. Natürlich ist es auch möglich, nur eine Unter- oder Obergrenze festzulegen.
<xs:element name="alter"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="18" /> <xs:maxInclusive value="65" /> </xs:restriction> </xs:simpleType> </xs:element>
Dezimalstellen
Das Element fractionDigits
kann dazu verwendet werden, die maximale Anzahl der Nachkommastellen festzulegen
(nur für das Element decimal
). Mit dem Element totalDigits
ist es hingegen möglich, die maximale
Anzahl an Dezimalstellen (sowohl vor als auch nach dem Punkt) zu definieren.
<xs:element name="temperatur"> <xs:simpleType> <xs:restriction base="xs:decimal"> <xs:fractionDigits value="2" /> </xs:restriction> </xs:simpleType> </xs:element>
Listenwerte
Eine weitere beliebte Form für die Nutzung von Einschränkungen ist die Definition einer Auswahl an erlaubten Werten.
Hierfür dient das Element enumeration
. Von diesem ordnen Sie dem restriction
-Element beliebig
viele unter. Alle Elemente (bzw. deren Werte) zusammen, stellen die Liste der Auswahlwerte dar. Den Wert des Auswahlwerts
legen Sie, wie bereits bekannt, mit dem value
-Attribut fest.
<xs:element name="farbe"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="rot" /> <xs:enumeration value="blau" /> <xs:enumeration value="grün" /> </xs:restriction> </xs:simpleType> </xs:element>
Reguläre Ausdrücke
Eine weitere sehr interessante Möglichkeit zur Einschränkung eines Werts ist das Element pattern
, mit welchem Sie
Werte mit Hilfe eines regulären Ausdrucks einschränken. Der reguläre Ausdruck wird dabei im value
-Attribut
angegeben.
<xs:element name="hex"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[0-9A-Fa-f]+" /> </xs:restriction> </xs:simpleType> </xs:element>