XSD- Einschränkungen/Facetten
Einschränkungen werden verwendet, um akzeptable Werte für XML-Elemente oder -Attribute zu definieren. Beschränkungen für XML-Elemente werden als Facetten bezeichnet.
Einschränkungen für Werte
Das folgende Beispiel definiert ein Element namens "age" mit einer Einschränkung. Der Wert des Alters darf nicht kleiner als 0 oder größer 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änkungen für einen Satz von Werten
Um den Inhalt eines XML-Elements auf einen Satz akzeptabler Werte zu beschränken, würden wir die Aufzählungsbeschränkung verwenden.
Das folgende Beispiel definiert ein Element namens "car" mit einer Einschränkung. Die einzig akzeptablen Werte sind: 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 hätte auch so geschrieben werden können:
<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, da er nicht Teil des Elements „car“ ist.
Einschränkungen für eine Reihe von Werten
Um den Inhalt eines XML-Elements zu begrenzen, um eine Reihe von Zahlen oder Buchstaben zu definieren, die verwendet werden können, würden wir die Musterbeschränkung verwenden.
Das folgende Beispiel definiert ein Element namens "letter" mit einer Einschränkung. Der einzig akzeptable Wert ist EINER der KLEINBUCHSTABEN von a bis 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 "Initialen" mit einer Einschränkung. Der einzig akzeptable Wert sind DREI GROSSBUCHSTABEN von a bis 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 auch ein Element namens "initials" mit einer Einschränkung. Der einzig akzeptable Wert sind DREI Klein- oder Großbuchstaben von a bis 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. Der einzig akzeptable Wert ist EINER der folgenden 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. Der einzig akzeptable Wert sind FÜNF Ziffern in Folge, und jede Ziffer muss in einem Bereich von 0 bis 9 liegen:
<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 Einschränkungen für eine Reihe von Werten
Das folgende Beispiel definiert ein Element namens "letter" mit einer Einschränkung. Der akzeptable Wert ist null oder mehr Vorkommen von Kleinbuchstaben von a bis 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 auch ein Element namens "letter" mit einer Einschränkung. Der akzeptable Wert sind ein oder mehrere Buchstabenpaare, wobei jedes Paar aus einem Kleinbuchstaben gefolgt von einem Großbuchstaben besteht. Beispielsweise wird „sToP“ durch dieses Muster validiert, aber nicht „Stop“ oder „STOP“ oder „stop“:
<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 nächste Beispiel definiert ein Element namens "gender" mit einer Einschränkung. Der einzig akzeptable Wert ist 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 nächste Beispiel definiert ein Element namens "password" mit einer Einschränkung. Es müssen genau acht Zeichen hintereinander stehen und diese Zeichen müssen Klein- oder Großbuchstaben von a bis z oder eine Zahl von 0 bis 9 sein:
<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änkungen für Leerzeichen
Um anzugeben, wie Whitespace-Zeichen behandelt werden sollen, würden wir die WhiteSpace-Einschränkung verwenden.
Dieses Beispiel definiert ein Element namens "Adresse" mit einer Einschränkung. Die WhiteSpace-Einschränkung ist auf „preserve“ gesetzt, was bedeutet, dass der XML-Prozessor KEINE Leerzeichen entfernen wird:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dieses Beispiel definiert auch ein Element namens "Adresse" mit einer Einschränkung. Die whiteSpace-Einschränkung ist auf „replace“ gesetzt, was bedeutet, dass der XML-Prozessor alle Leerzeichen (Zeilenvorschübe, Tabulatoren, Leerzeichen und Wagenrückläufe) durch Leerzeichen ERSETZEN WIRD:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dieses Beispiel definiert auch ein Element namens "Adresse" mit einer Einschränkung. Die WhiteSpace-Einschränkung ist auf „collapse“ gesetzt, was bedeutet, dass der XML-Prozessor alle Leerzeichen ENTFERNT (Zeilenvorschübe, Tabulatoren, Leerzeichen, Wagenrückläufe werden durch Leerzeichen ersetzt, führende und nachgestellte Leerzeichen werden entfernt und mehrere Leerzeichen werden auf reduziert ein einzelnes Leerzeichen):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Längenbeschränkungen
Um die Länge eines Werts in einem Element zu begrenzen, würden wir die Beschränkungen length, maxLength und minLength verwenden.
Dieses Beispiel definiert ein Element namens "password" mit einer Einschränkung. Der Wert muss genau acht 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 ein weiteres Element namens "password" mit einer Einschränkung. Der Wert muss mindestens fünf und höchstens acht 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
Constraint | Description |
---|---|
enumeration | Defines a list of acceptable values |
fractionDigits | Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero |
length | Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero |
maxExclusive | Specifies the upper bounds for numeric values (the value must be less than this value) |
maxInclusive | Specifies the upper bounds for numeric values (the value must be less than or equal to this value) |
maxLength | Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero |
minExclusive | Specifies the lower bounds for numeric values (the value must be greater than this value) |
minInclusive | Specifies the lower bounds for numeric values (the value must be greater than or equal to this value) |
minLength | Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero |
pattern | Defines the exact sequence of characters that are acceptable |
totalDigits | Specifies the exact number of digits allowed. Must be greater than zero |
whiteSpace | Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled |