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:element name="age">
  <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:element name="car">
  <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:element name="car" type="carType"/>

<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:element name="letter">
  <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:element name="initials">
  <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:element name="initials">
  <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:element name="choice">
  <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:element name="prodid">
  <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:element name="letter">
  <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:element name="letter">
  <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:element name="gender">
  <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:element name="password">
  <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:element name="address">
  <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:element name="address">
  <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:element name="address">
  <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:element name="password">
  <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:element name="password">
  <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.
Andere Erweiterungen