Restricțiile sunt folosite pentru a defini valori acceptabile pentru elementele XML sau atribute. Restricțiile privind elementele XML sunt numite fațete.
Restricții privind valorile
Următorul exemplu definește un element numit "age" , cu o restricție. Valoarea de vârstă nu poate fi mai mică decât 0 sau mai mare de 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>
Restricții privind un set de valori
Pentru a limita conținutul unui element XML la un set de valori acceptabile, ne-ar folosi constrângerea de enumerare.
Exemplul de mai jos definește un element numit "car" cu o restricție. Singurele valori acceptabile sunt: 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>
Exemplul de mai sus ar putea, de asemenea, au fost scrise astfel:
<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>
Note: În acest caz, de tip "carType" poate fi folosit de alte elemente , deoarece nu este o parte din "car" element.
Restricții privind o serie de valori
Pentru a limita conținutul unui element XML pentru a defini o serie de numere sau litere care pot fi folosite, vom folosi constrângerea de model.
Exemplul de mai jos definește un element numit "letter" cu o restricție. Singura valoare acceptabilă este una dintre literele mici de la A la Z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Următorul exemplu definește un element numit "initials" cu o restricție. Singura valoare acceptabilă este de trei dintre litere mari de la A la 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>
Următorul exemplu definește , de asemenea , un element numit "initials" cu o restricție. Singura valoare acceptabilă este TREI dintre Minuscule SAU MAJUSCULE de la a la 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>
Următorul exemplu definește un element numit "choice" , cu o restricție. Singura valoare acceptabilă este una dintre următoarele litere: x, y, z SAU:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Următorul exemplu definește un element numit "prodid" cu o restricție. Singura valoare acceptabilă este de cinci cifre într-o secvență, și fiecare cifră trebuie să fie într-un interval de la 0 la 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>
Alte restricții cu privire la o serie de valori
Exemplul de mai jos definește un element numit "letter" cu o restricție. Valoarea acceptabilă este zero sau mai multe apariții de litere mici de la A la Z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Următorul exemplu definește , de asemenea , un element numit "letter" cu o restricție. Valoarea acceptabilă este una sau mai multe perechi de litere, fiecare pereche constând dintr-o literă minusculă, urmată de o literă majusculă. De exemplu, "sToP" va fi validat de acest model, dar nu și "Stop" sau "STOP" sau "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>
Următorul exemplu definește un element numit "gender" cu o restricție. Singura valoare acceptabilă este de sex masculin sau feminin:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Următorul exemplu definește un element numit "password" cu o restricție. Trebuie să aibă exact opt caractere într-un rând și acele caractere trebuie să fie litere mici sau majuscule de la A la Z, sau un număr de la 0 la 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>
Restricții privind caracterele whitespace
Pentru a specifica modul în care caracterele whitespace trebuie să fie manipulate, ne-ar folosi constrângerea spațiu.
Acest exemplu definește un element numit "address" cu o restricție. Constrângerea este setat la spațiile albe "preserve" , ceea ce înseamnă că procesorul XML nu va elimina orice caractere spațiu alb:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Acest exemplu definește , de asemenea , un element numit "address" cu o restricție. Constrângerea este setat la spațiile albe "replace" , ceea ce înseamnă că procesorul XML va înlocui toate caracterele spațiu alb (feed - uri de linie, filele, spații și întoarce transport) cu spații:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Acest exemplu definește , de asemenea , un element numit "address" cu o restricție. Constrângerea spații albe este setat la "collapse" , ceea ce înseamnă că procesorul XML va elimina toate caracterele spațiu alb (feed - uri de linie, tab - uri, spații, întoarce transport sunt înlocuite cu spații, spații de conducere și trailing sunt eliminate, iar spațiile multiple sunt reduse la un singur spațiu):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Restricții privind Lungime
Pentru a limita lungimea unei valori într-un element, vom folosi lungimea, MAXLENGTH și constrângerile MINLENGTH.
Acest exemplu definește un element numit "password" cu o restricție. Valoarea trebuie să fie exact opt caractere:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Acest exemplu definește un alt element numit "password" cu o restricție. Valoarea trebuie să fie de minim cinci caractere și maximum opt caractere:
<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>
Restricții pentru tipuri de date
Constrângere | Descriere |
---|---|
enumeration | Definește o listă de valori acceptabile |
fractionDigits | Specifică numărul maxim de zecimale permise. Trebuie să fie egală sau mai mare decât zero |
length | Specifică numărul exact de caractere sau elementele listei permise. Trebuie să fie egală sau mai mare decât zero |
maxExclusive | Specifică limitele superioare pentru valori numerice (valoarea trebuie să fie mai mică decât această valoare) |
maxInclusive | Specifică limitele superioare pentru valori numerice (valoarea trebuie să fie mai mic sau egal cu această valoare) |
maxLength | Specifică numărul maxim de caractere sau elementele listei permise. Trebuie să fie egală sau mai mare decât zero |
minExclusive | Specifică limitele inferioare pentru valorile numerice (valoarea trebuie să fie mai mare decât această valoare) |
minInclusive | Specifică limitele inferioare pentru valorile numerice (valoarea trebuie să fie mai mare sau egal cu această valoare) |
minLength | Specifică numărul minim de caractere sau elementele listei permise. Trebuie să fie egală sau mai mare decât zero |
pattern | Definește secvența exactă de caractere care sunt acceptabile |
totalDigits | Specifică numărul exact de cifre permise. Trebuie să fie mai mare decât zero |
whiteSpace | Specifică modul în spațiu alb (feed-uri de linie, tab-uri, spații și întoarce transport) este manipulat |