XSD Beschränkungen / Facets

Beschränkung (Beschränkung) wird verwendet, um für XML-Elemente oder Attribute akzeptable Werte zu definieren. Eine Beschränkung eines XML-Elements wird als Facet bezeichnet.

Beschränkung von Werten

Ein Beispiel, das ein Element mit dem bestimmten Namen "age" definiert. 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>

Beschränkung einer Wertgruppe

Um den Inhalt eines XML-Elements auf eine Gruppe akzeptabler Werte zu beschränken, müssen wir Enum-Beschränkungen (枚举约束) verwenden.

Ein Beispiel, das ein Element mit dem bestimmten Namen "car" definiert. Akzeptierte 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>

Der obige Beispiel kann auch so 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>

Anmerkung:In diesem Fall kann der Typ "carType" von anderen Elementen verwendet werden, da er nicht Teil des Elements "car" ist.

Beschränkung einer Wertreihe

Um den Inhalt eines XML-Elements auf eine Reihe von verwendbaren Ziffern oder Buchstaben zu begrenzen, müssen wir Musterbeschränkungen (Musterbeschränkungen) verwenden.

Ein Beispiel, das ein Element mit dem bestimmten Namen "letter" definiert. Der akzeptierte Wert ist ein einziger Buchstabe a - z:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[a-z]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Der nächste Beispiel definiert ein Element mit dem bestimmten Namen "initials". Akzeptierte Werte sind drei der großen 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>

Der nächste Beispiel definiert ebenfalls ein Element mit dem bestimmten Namen "initials". Akzeptierte Werte sind drei der großen oder kleinen Buchstaben 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>

Der nächste Beispiel definiert ein Element mit einem bestimmten Namen "choice". Akzeptierte Werte sind ein Buchstabe 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>

Der nächste Beispiel definiert ein Element mit einem bestimmten Namen "prodid". Akzeptierte Werte sind eine Sequenz aus fünf arabischen Ziffern, und jeder Ziffer ist der Wertebereich 0-9:

<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>

Andere Begrenzungen für eine Reihe von Werten

Das folgende Beispiel definiert ein Element mit einem bestimmten Namen "letter". Akzeptierte Werte sind Null oder mehrere Buchstaben aus 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 mit einem bestimmten Namen "letter". Akzeptierte Werte sind Paare oder mehrere Paare von Buchstaben, die von einem Kleinbuchstaben gefolgt von einem Großbuchstaben bestehen. Zum Beispiel wird "sToP" durch dieses Muster validiert, aber "Stop", "STOP" oder "stop" können nicht validiert werden:

<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 mit einem bestimmten Namen "gender". Akzeptierte Werte sind "male" oder "female":

<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 mit einem bestimmten Namen "password". Akzeptierte Werte sind Zeilenzeichen, die aus 8 Zeichen bestehen und entweder Großbuchstaben oder Kleinbuchstaben a - z oder Ziffern 0 - 9 sein müssen:

<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>

Begrenzung von Leerzeichen

Um die Behandlung von Leerzeichen (whitespace characters) zu bestimmen, müssen wir die whiteSpace-Begrenzung verwenden.

Das folgende Beispiel definiert ein Element mit einem bestimmten Namen "address". Die whiteSpace-Begrenzung ist auf "preserve" gesetzt, was bedeutet, dass der XML-Verarbeiter keine Leerzeichenzeichen entfernen wird:

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="preserve"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Dieser Beispiel auch definiert ein Element namens "address" mit einer Beschränkung. Diese whiteSpace-Beschränkung ist auf "replace" gesetzt, was bedeutet, dass der XML-Processor alle Leerzeichen (Zeilenumbrüche, Return-Tasten, Leerzeichen und Tabulatoren) entfernen wird:

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="replace"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Dieser Beispiel auch definiert ein Element namens "address" mit einer Beschränkung. Diese whiteSpace-Beschränkung ist auf "collapse" gesetzt, was bedeutet, dass der XML-Processor alle Leerzeichen (Zeilenumbrüche, Return-Tasten, Leerzeichen und Tabulatoren) entfernen wird (Zeilenumbrüche, Return-Tasten, Leerzeichen und Tabulatoren werden durch ein Leerzeichen ersetzt, Leerzeichen am Anfang und Ende werden entfernt und mehrere aufeinanderfolgende Leerzeichen werden zu einem einzigen Leerzeichen zusammengefasst):

<xs:element name="address">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Beschränkung der Länge

Um die Länge des Wertes eines Elements 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. Der 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>

Dieser Beispiel auch definiert ein Element namens "password" mit einer Beschränkung. Der Wert muss mindestens 5 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>

Beschränkung des Datentyps

Beschränkung Beschreibung
enumeration Definiert eine Liste akzeptabler Werte
fractionDigits Definiert die maximale Anzahl der Dezimalstellen, die erlaubt sind. Sie muss größer oder gleich 0 sein.
length Definiert die genaue Anzahl der erlaubten Zeichen oder Elemente einer Liste. Sie muss größer oder gleich 0 sein.
maxExclusive Definiert das obere Limit eines Wertebereichs. Erlaubte Werte müssen kleiner als dieser Wert sein.
maxInclusive Definieren Sie das obere Limit der Zahl. Die erlaubten Werte müssen kleiner oder gleich diesem Wert sein.
maxLength Definieren Sie die maximale Anzahl der erlaubten Zeichen oder Listelemente. Muss größer oder gleich 0 sein.
minExclusive Definieren Sie das untere Limit der Zahl. Die erlaubten Werte müssen größer diesem Wert sein.
minInclusive Definieren Sie das untere Limit der Zahl. Die erlaubten Werte müssen größer oder gleich diesem Wert sein.
minLength Definieren Sie die minimale Anzahl der erlaubten Zeichen oder Listelemente. Muss größer oder gleich 0 sein.
pattern Definieren Sie die genaue Sequenz der akzeptierten Zeichen.
totalDigits Definieren Sie die genaue Anzahl der Stellen der erlaubten arabischen Ziffern. Muss größer als 0 sein.
whiteSpace Definieren Sie die Art und Weise, wie Leerzeichen (Zeilenumbruch, Return, Leerzeichen und Tabulator) behandelt werden.