Ultimele tutoriale de dezvoltare web
 

Restricții XSD / Fațetele


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