XSD Limitation / Facets
- Page précédente Attributs XSD
- Page suivante Élément XSD
La restriction (restriction) est utilisée pour définir les valeurs acceptables pour un élément ou une propriété XML. Une restriction sur un élément XML est appelée facette.
Restriction des valeurs
Dans l'exemple suivant, un élément nommé "age" avec une restriction est défini. La valeur de "age" 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>
Restriction d'un ensemble de valeurs
Pour limiter le contenu d'un élément XML à un ensemble de valeurs acceptables, nous devons utiliser une contrainte d'énumération (enumeration constraint).
Dans l'exemple suivant, un élément nommé "car" avec une restriction est défini. Les valeurs acceptées 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 précédent peut également être écrit comme suit :
<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 n'est pas composant de l'élément "car".
Restriction d'une série de valeurs
Pour limiter le contenu d'un élément XML à une série de nombres ou de lettres utilisables, nous devons utiliser une contrainte de modèle (pattern constraint).
Dans l'exemple suivant, un élément nommé "letter" avec une restriction est défini. Les valeurs acceptées sont une seule lettre minuscule a - z :
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Le prochain exemple définit un élément nommé "initials" avec une restriction. Les valeurs acceptées sont les trois lettres majuscules 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>
Le prochain exemple définit également un élément nommé "initials" avec une restriction. Les valeurs acceptées sont les trois lettres majuscules ou minuscules 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>
Le prochain exemple définit un élément nommé "choice" avec une limitation. Les valeurs acceptables sont une des lettres 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>
Le prochain exemple définit un élément nommé "prodid" avec une limitation. Les valeurs acceptables sont une séquence de cinq chiffres arabes, 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 limitations pour une série de valeurs
L'exemple suivant définit un élément nommé "letter" avec une limitation. Les valeurs acceptables sont zéro ou plusieurs lettres 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 nommé "letter" avec une limitation. Les valeurs acceptables sont un ou plusieurs paires de lettres, chaque paire étant composée d'une lettre minuscule suivie d'une lettre majuscule. Par exemple, "sToP" passera cette validation, mais "Stop", "STOP" ou "stop" ne le feront pas :
<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 nommé "gender" avec une limitation. Les valeurs acceptables sont male ou female :
<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 nommé "password" avec une limitation. Les valeurs acceptables sont une ligne de caractères composée de 8 caractères, ces caractères doivent être des lettres majuscules ou minuscules a - z ou des chiffres 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>
Limitation des caractères d'espace blanc
Pour définir la manière de traiter les caractères d'espace blanc (whitespace characters), nous devons utiliser la limitation whiteSpace.
L'exemple suivant définit un élément nommé "address" avec une limitation. Cette limitation whiteSpace est définie sur "preserve", ce qui signifie que le processeur XML ne supprimera aucun caractère d'espace blanc :
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Dans cet exemple, un élément nommé "address" avec une limitation est également défini. Cette limitation whiteSpace est définie sur "replace", ce qui signifie que le traitementur XML supprimera tous les caractères d'espace (les retours chariot, les entêtes de ligne, les espaces et les tabulations) :
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Dans cet exemple, un élément nommé "address" avec une limitation est également défini. Cette limitation whiteSpace est définie sur "collapse", ce qui signifie que le traitementur XML supprimera tous les caractères d'espace (les retours chariot, les entêtes de ligne, les espaces et les tabulations seront remplacés par un espace, les espaces de début et de fin seront supprimés, et les espaces multiples consécutifs seront 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>
Limitation de la longueur
Pour limiter la longueur des valeurs d'un élément, il est nécessaire d'utiliser les limitations length, maxLength et minLength.
Dans cet exemple, un élément nommé "password" avec une limitation est également défini. Sa valeur doit être exactement de 8 caractères :
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Dans cet exemple, un élément nommé "password" avec une limitation est également défini. Sa valeur doit être comprise entre 5 et 8 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>
Limitation du type de données
Limitation | Description |
---|---|
enumeration | Définir une liste de valeurs acceptables |
fractionDigits | Définir le nombre maximum de décimales autorisées. Il doit être supérieur ou égal à 0. |
length | Définir le nombre exact de caractères ou d'éléments de liste autorisés. Il doit être supérieur ou égal à 0. |
maxExclusive | Définir la limite supérieure des valeurs numériques. Les valeurs autorisées doivent être inférieures à cette valeur. |
maxInclusive | Définir la limite supérieure des valeurs numériques. Les valeurs autorisées doivent être inférieures ou égales à cette valeur. |
maxLength | Définir le nombre maximum de caractères ou d'éléments de liste autorisés. Doit être supérieur ou égal à 0. |
minExclusive | Définir la limite inférieure des valeurs numériques. Les valeurs autorisées doivent être supérieures à cette valeur. |
minInclusive | Définir la limite inférieure des valeurs numériques. Les valeurs autorisées doivent être supérieures ou égales à cette valeur. |
minLength | Définir le nombre minimum de caractères ou d'éléments de liste autorisés. Doit être supérieur ou égal à 0. |
pattern | Définir la séquence précise des caractères acceptés. |
totalDigits | Définir le nombre précis de chiffres arabes autorisés. Doit être supérieur à 0. |
whiteSpace | Définir le traitement des caractères blancs (retours à la ligne, retours chariot, espaces et tabulations). |
- Page précédente Attributs XSD
- Page suivante Élément XSD