XSD- beperkingen/facetten
Beperkingen worden gebruikt om acceptabele waarden voor XML-elementen of attributen te definiëren. Beperkingen op XML-elementen worden facetten genoemd.
Beperkingen op waarden
Het volgende voorbeeld definieert een element met de naam "age" met een beperking. De waarde van leeftijd kan niet lager zijn dan 0 of hoger dan 120:
<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>
Beperkingen op een reeks waarden
Om de inhoud van een XML-element te beperken tot een reeks acceptabele waarden, zouden we de opsommingsbeperking gebruiken.
Het onderstaande voorbeeld definieert een element met de naam "auto" met een beperking. De enige acceptabele waarden zijn: 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>
Het bovenstaande voorbeeld had ook zo kunnen worden geschreven:
<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>
Opmerking: In dit geval kan het type "carType" door andere elementen worden gebruikt omdat het geen deel uitmaakt van het element "car".
Beperkingen op een reeks waarden
Om de inhoud van een XML-element te beperken om een reeks cijfers of letters te definiëren die kunnen worden gebruikt, zouden we de patroonbeperking gebruiken.
Het onderstaande voorbeeld definieert een element genaamd "letter" met een beperking. De enige acceptabele waarde is EEN van de kleine letters van a tot z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Het volgende voorbeeld definieert een element genaamd "initialen" met een beperking. De enige acceptabele waarde is DRIE van de HOOFDLETTERS van a tot 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>
Het volgende voorbeeld definieert ook een element genaamd "initialen" met een beperking. De enige acceptabele waarde is DRIE van de KLEINE OF HOOFDLETTERS van a tot 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>
Het volgende voorbeeld definieert een element genaamd "choice" met een beperking. De enige acceptabele waarde is EEN van de volgende letters: x, y, OR z:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Het volgende voorbeeld definieert een element genaamd "prodi" met een beperking. De enige acceptabele waarde is VIJF cijfers in een reeks, en elk cijfer moet tussen 0 en 9 liggen:
<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 beperkingen op een reeks waarden
Het onderstaande voorbeeld definieert een element genaamd "letter" met een beperking. De acceptabele waarde is nul of meer kleine letters van a tot z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Het volgende voorbeeld definieert ook een element genaamd "letter" met een beperking. De acceptabele waarde is een of meer letterparen, waarbij elk paar bestaat uit een kleine letter gevolgd door een hoofdletter. Bijvoorbeeld, "sToP" wordt gevalideerd door dit patroon, maar niet "Stop" of "STOP" of "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>
Het volgende voorbeeld definieert een element met de naam "geslacht" met een beperking. De enige acceptabele waarde is mannelijk OF vrouwelijk:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Het volgende voorbeeld definieert een element genaamd "wachtwoord" met een beperking. Er moeten precies acht tekens op een rij zijn en die tekens moeten kleine letters of hoofdletters zijn van a tot z, of een cijfer van 0 tot 9:
<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>
Beperkingen op witruimtetekens
Om te specificeren hoe witruimte-tekens moeten worden verwerkt, zouden we de whiteSpace-beperking gebruiken.
Dit voorbeeld definieert een element met de naam "adres" met een beperking. De whiteSpace-beperking is ingesteld op "preserve", wat betekent dat de XML-processor GEEN witruimtetekens zal verwijderen:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dit voorbeeld definieert ook een element genaamd "adres" met een beperking. De whiteSpace-beperking is ingesteld op "vervangen", wat betekent dat de XML-processor alle witruimtetekens (regelinvoer, tabs, spaties en regelterugloop) ZAL VERVANGEN door spaties:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dit voorbeeld definieert ook een element genaamd "adres" met een beperking. De whiteSpace-beperking is ingesteld op "collapse", wat betekent dat de XML-processor alle witruimtetekens ZAL VERWIJDEREN (regelinvoer, tabs, spaties, regelterugloops worden vervangen door spaties, voorloop- en volgspaties worden verwijderd en meerdere spaties worden gereduceerd tot een enkele spatie):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Beperkingen op lengte
Om de lengte van een waarde in een element te beperken, zouden we de lengte-, maxLength- en minLength-beperkingen gebruiken.
Dit voorbeeld definieert een element met de naam "wachtwoord" met een beperking. De waarde moet exact acht tekens lang zijn:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Dit voorbeeld definieert een ander element genaamd "wachtwoord" met een beperking. De waarde moet minimaal vijf tekens en maximaal acht tekens bevatten:
<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>
Beperkingen voor gegevenstypen
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 |