XSD Einschränkungen / Facetten
Einschränkungen werden verwendet, um akzeptable Werte für XML-Elemente oder -Attribute zu definieren. Einschränkungen für XML-Elemente werden Facetten genannt.
Einschränkungen für Werte
Das folgende Beispiel definiert ein Element mit dem Namen "age" mit einer Einschränkung. Der Wert von age darf nicht niedriger als 0 oder höher als 120 sein:
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Einschränkung auf eine Menge von Werten
Um den Inhalt eines XML-Elements auf eine Menge akzeptabler Werte einzuschränken, verwenden wir die Enumeration-Einschränkung.
Das folgende Beispiel definiert ein Element mit dem Namen "car" mit einer Einschränkung. Die zulässigen Werte sind nur: Audi, Golf, BMW:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das obige Beispiel kann auch wie folgt geschrieben werden:
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
Hinweis:In diesem Fall kann der Typ "carType" von anderen Elementen verwendet werden, weil er nicht Teil des Elements "car" ist.
Einschränkung auf eine Reihe von Werten
Um den Inhalt eines XML-Elements auf eine Reihe zulässiger Zahlen oder Buchstaben einzuschränken, verwenden wir die Muster-Einschränkung.
Das folgende Beispiel definiert ein Element namens "letter" mit einer Einschränkung. Die zulässigen Werte sind nur einer der Kleinbuchstaben a - z:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das nächste Beispiel definiert ein Element namens "initials" mit einer Einschränkung. Die zulässigen Werte sind drei der Großbuchstaben A - Z:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das nächste Beispiel definiert ebenfalls ein Element namens "initials" mit einer Einschränkung. Die zulässigen Werte sind drei der Groß- oder Kleinbuchstaben a - z:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das nächste Beispiel definiert ein Element namens "choice" mit einer Einschränkung. Die zulässigen Werte sind einer der Buchstaben x, y oder z:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das nächste Beispiel definiert ein Element namens "prodid" mit einer Einschränkung. Die zulässigen Werte sind eine Folge von fünf arabischen Ziffern, wobei jede Ziffer im Bereich von 0-9 liegt:
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Weitere Einschränkungen für eine Reihe von Werten
Das folgende Beispiel definiert ein Element namens "letter" mit einer Einschränkung. Die zulässigen Werte sind null oder mehr Buchstaben von a - z:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das folgende Beispiel definiert ein Element namens "letter" mit einer Einschränkung. Die zulässigen Werte sind ein oder mehrere Buchstabenpaare, wobei jedes Paar aus einem Kleinbuchstaben gefolgt von einem Großbuchstaben besteht. Zum Beispiel würde "sToP" die Validierung dieses Musters bestehen, aber "Stop", "STOP" oder "stop" würden die Validierung nicht bestehen:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das folgende Beispiel definiert ein Element namens "gender" mit einer Einschränkung. Die zulässigen Werte sind männlich oder weiblich:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Das folgende Beispiel definiert ein Element namens "password" mit einer Einschränkung. Die zulässigen Werte sind eine Zeichenfolge aus 8 Zeichen, die aus Groß- oder Kleinbuchstaben a - z oder Ziffern 0 - 9 bestehen muss:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Einschränkung für Whitespace-Zeichen
Um festzulegen, wie Whitespace-Zeichen behandelt werden, müssen wir die whiteSpace-Beschränkung verwenden.
Das folgende Beispiel definiert ein Element namens "address" mit einer Beschränkung. Diese whiteSpace-Beschränkung ist auf "preserve" gesetzt, was bedeutet, dass der XML-Prozessor keine Whitespace-Zeichen entfernt:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dieses Beispiel definiert ebenfalls ein Element namens "address" mit einer Beschränkung. Diese whiteSpace-Beschränkung ist auf "replace" gesetzt, was bedeutet, dass der XML-Prozessor alle Whitespace-Zeichen entfernt (Zeilenvorschübe, Wagenrückläufe, Leerzeichen und Tabulatoren):
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dieses Beispiel definiert ebenfalls ein Element namens "address" mit einer Beschränkung. Diese whiteSpace-Beschränkung ist auf "collapse" gesetzt, was bedeutet, dass der XML-Prozessor alle Whitespace-Zeichen entfernt (Zeilenvorschübe, Wagenrückläufe, Leerzeichen und Tabulatoren werden durch Leerzeichen ersetzt, führende und nachfolgende Leerzeichen werden entfernt und mehrere aufeinanderfolgende Leerzeichen werden zu einem einzelnen Leerzeichen reduziert):
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Beschränkungen für die Länge
Um die Länge eines Werts in einem Element zu beschränken, müssen wir die Beschränkungen length, maxLength und minLength verwenden.
Dieses Beispiel definiert ein Element namens "password" mit einer Beschränkung. Sein Wert muss genau 8 Zeichen lang sein:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dieses Beispiel definiert außerdem ein Element namens "password" mit einer Einschränkung. Sein Wert muss mindestens 5 Zeichen und höchstens 8 Zeichen lang sein:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Einschränkungen für Datentypen
| Einschränkung | Beschreibung |
|---|---|
| enumeration | Definiert eine Liste zulässiger Werte |
| fractionDigits | Definiert die maximal zulässige Anzahl an Dezimalstellen. Muss größer oder gleich 0 sein. |
| length | Definiert die genaue Anzahl zulässiger Zeichen oder Listenelemente. Muss größer oder gleich 0 sein. |
| maxExclusive | Definiert die Obergrenze eines Werts. Zulässige Werte müssen kleiner als dieser Wert sein. |
| maxInclusive | Definiert die Obergrenze eines Werts. Zulässige Werte müssen kleiner oder gleich diesem Wert sein. |
| maxLength | Definiert die maximale Anzahl zulässiger Zeichen oder Listenelemente. Muss größer oder gleich 0 sein. |
| minExclusive | Definiert die Untergrenze eines Werts. Zulässige Werte müssen größer als dieser Wert sein. |
| minInclusive | Definiert die Untergrenze eines Werts. Zulässige Werte müssen größer oder gleich diesem Wert sein. |
| minLength | Definiert die minimale Anzahl zulässiger Zeichen oder Listenelemente. Muss größer oder gleich 0 sein. |
| pattern | Definiert die genaue Abfolge zulässiger Zeichen. |
| totalDigits | Definiert die genaue Anzahl zulässiger arabischer Ziffern. Muss größer als 0 sein. |
| whiteSpace | Definiert, wie Leerraumzeichen (Zeilenvorschübe, Wagenrückläufe, Leerzeichen und Tabulatoren) behandelt werden. |