Restrictions/facettes XSD
Les restrictions sont utilisées pour définir des valeurs acceptables pour les éléments ou attributs XML. Les restrictions sur les éléments XML sont appelées facettes.
Restrictions sur les valeurs
L'exemple suivant définit un élément appelé "age" avec une restriction. La valeur de l'âge ne peut pas être inférieure à 0 ou supérieure à 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>
Restrictions sur un ensemble de valeurs
Pour limiter le contenu d'un élément XML à un ensemble de valeurs acceptables, nous utiliserions la contrainte d'énumération.
L'exemple ci-dessous définit un élément appelé "voiture" avec une restriction. Les seules valeurs acceptables sont : 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>
L'exemple ci-dessus aurait également pu être écrit comme ceci :
<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>
Remarque : Dans ce cas, le type "carType" peut être utilisé par d'autres éléments car il ne fait pas partie de l'élément "car".
Restrictions sur une série de valeurs
Pour limiter le contenu d'un élément XML afin de définir une série de chiffres ou de lettres pouvant être utilisés, nous utiliserions la contrainte de modèle.
L'exemple ci-dessous définit un élément appelé "lettre" avec une restriction. La seule valeur acceptable est UNE des lettres MINUSCULES de a à z :
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'exemple suivant définit un élément appelé "initials" avec une restriction. La seule valeur acceptable est TROIS des lettres MAJUSCULES de 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>
L'exemple suivant définit également un élément appelé "initials" avec une restriction. La seule valeur acceptable est TROIS des lettres MINUSCULES OU MAJUSCULES de 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>
L'exemple suivant définit un élément appelé "choix" avec une restriction. La seule valeur acceptable est UNE des lettres suivantes : x, y, OU z :
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'exemple suivant définit un élément appelé "prodid" avec une restriction. La seule valeur acceptable est CINQ chiffres dans une séquence, et chaque chiffre doit être compris entre 0 et 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>
Autres restrictions sur une série de valeurs
L'exemple ci-dessous définit un élément appelé "lettre" avec une restriction. La valeur acceptable est zéro ou plusieurs occurrences de lettres minuscules de a à z :
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'exemple suivant définit également un élément appelé "lettre" avec une restriction. La valeur acceptable est une ou plusieurs paires de lettres, chaque paire étant constituée d'une lettre minuscule suivie d'une lettre majuscule. Par exemple, "sToP" sera validé par ce pattern, mais pas "Stop" ou "STOP" ou "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>
L'exemple suivant définit un élément appelé "gender" avec une restriction. La seule valeur acceptable est masculin OU féminin :
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'exemple suivant définit un élément appelé "password" avec une restriction. Il doit y avoir exactement huit caractères dans une ligne et ces caractères doivent être des lettres minuscules ou majuscules de a à z, ou un nombre de 0 à 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>
Restrictions sur les caractères d'espacement
Pour spécifier comment les caractères d'espacement doivent être gérés, nous utiliserons la contrainte whiteSpace.
Cet exemple définit un élément appelé "adresse" avec une restriction. La contrainte whiteSpace est définie sur "preserve", ce qui signifie que le processeur XML NE SUPPRIMERA AUCUN espace blanc :
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Cet exemple définit également un élément appelé "adresse" avec une restriction. La contrainte whiteSpace est définie sur "replace", ce qui signifie que le processeur XML REMPLACERA tous les caractères d'espace blanc (sauts de ligne, tabulations, espaces et retours chariot) par des espaces :
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Cet exemple définit également un élément appelé "adresse" avec une restriction. La contrainte whiteSpace est définie sur "collapse", ce qui signifie que le processeur XML SUPPRIMERA tous les espaces blancs (les sauts de ligne, les tabulations, les espaces, les retours chariot sont remplacés par des espaces, les espaces de début et de fin sont supprimés et plusieurs espaces sont réduits à un seul espace):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Restrictions de longueur
Pour limiter la longueur d'une valeur dans un élément, nous utiliserions les contraintes length, maxLength et minLength.
Cet exemple définit un élément appelé "password" avec une restriction. La valeur doit comporter exactement huit caractères :
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Cet exemple définit un autre élément appelé "password" avec une restriction. La valeur doit comporter au moins cinq caractères et au maximum huit caractères :
<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>
Restrictions pour les types de données
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 |