Le restrizioni vengono utilizzati per definire i valori accettabili per gli elementi o attributi XML. Restrizioni elementi XML sono chiamati sfaccettature.
Restrizioni Valori
L'esempio seguente definisce un elemento chiamato "age" con una limitazione. Il valore di età non può essere inferiore a 0 o maggiore di 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>
Restrizioni su un insieme di valori
Per limitare il contenuto di un elemento XML ad un insieme di valori accettabili, useremmo il vincolo enumerazione.
L'esempio seguente definisce un elemento chiamato "car" con una limitazione. Gli unici valori accettabili sono: 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'esempio di cui sopra potrebbe anche essere stato scritto in questo modo:
<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: In questo caso il tipo "carType" può essere utilizzato da altri elementi perché non è parte della "car" elemento.
Restrizioni una serie di valori
Per limitare il contenuto di un elemento XML per definire una serie di numeri o lettere che può essere utilizzato, useremmo il vincolo pattern.
L'esempio seguente definisce un elemento chiamato "letter" con una limitazione. L'unico valore accettabile è una delle lettere minuscole dalla A alla Z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'esempio seguente definisce un elemento chiamato "initials" con una limitazione. L'unico valore accettabile è tre delle lettere maiuscole dalla A alla 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'esempio seguente definisce anche un elemento chiamato "initials" con una limitazione. L'unico valore accettabile è tre dei minuscola o maiuscola, lettere dalla A alla 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>
Il prossimo esempio definisce un elemento chiamato "choice" con una limitazione. L'unico valore accettabile è una delle seguenti lettere: x, y, z O:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'esempio seguente definisce un elemento chiamato "prodid" con una limitazione. L'unico valore accettabile è cinque cifre in una sequenza, e ogni cifra deve essere in un intervallo da 0 a 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>
Altre restrizioni su una serie di valori
L'esempio seguente definisce un elemento chiamato "letter" con una limitazione. Il valore accettabile è zero o più occorrenze di lettere minuscole dalla A alla Z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'esempio seguente definisce anche un elemento chiamato "letter" con una limitazione. Il valore accettabile è una o più coppie di lettere, ciascuna coppia costituita da una lettera minuscola seguita da una lettera maiuscola. Ad esempio, "sToP" sarà convalidato da questo modello, ma non "Stop" o "STOP" o "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>
Il prossimo esempio definisce un elemento chiamato "gender" con una limitazione. L'unico valore accettabile è maschio o femmina:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
L'esempio seguente definisce un elemento chiamato "password" con una limitazione. Ci deve essere esattamente otto caratteri di fila e questi caratteri devono essere lettere minuscole o maiuscole dalla A alla Z, o un numero da 0 a 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>
Restrizioni caratteri di spaziatura
Per specificare come i caratteri spazio bianco dovrebbe essere gestito, useremmo il vincolo spazi.
Questo esempio definisce un elemento chiamato "address" con una limitazione. Il vincolo di spazio bianco è impostato su "preserve" , il che significa che il processore XML non rimuoverà eventuali spazi vuoti:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Questo esempio definisce anche un elemento chiamato "address" con una limitazione. Il vincolo di spazio bianco è impostato su "replace" , il che significa che il processore XML sostituire tutti i caratteri di spazio bianco (avanzamenti di riga, tabulazioni, spazi, e ritorni a capo) con spazi:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Questo esempio definisce anche un elemento chiamato "address" con una limitazione. Il vincolo di spazio bianco è impostato su "collapse" , il che significa che il processore XML verranno rimossi tutti i caratteri di spazio (line feed, tabulazioni, spazi, ritorni a capo vengono sostituiti con gli spazi, spazi iniziali e finali vengono rimossi, e gli spazi multipli sono ridotti a un unico spazio):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Restrizioni Lunghezza
Per limitare la lunghezza di un valore in un elemento, avremmo utilizzare la lunghezza, maxLength e vincoli MINLENGTH.
Questo esempio definisce un elemento chiamato "password" con una limitazione. Il valore deve essere esattamente otto caratteri:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Questo esempio definisce un elemento chiamato "password" con una limitazione. Il valore deve essere almeno cinque caratteri e massimo otto caratteri:
<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>
Restrizioni per Datatypes
Costrizione | Descrizione |
---|---|
enumeration | Definisce un elenco di valori accettabili |
fractionDigits | Specifica il numero massimo di cifre decimali consentite. Deve essere uguale o maggiore di zero |
length | Specifica il numero esatto di caratteri o voci di elenco consentiti. Deve essere uguale o maggiore di zero |
maxExclusive | Specifica il limite superiore per i valori numerici (il valore deve essere inferiore a questo valore) |
maxInclusive | Specifica il limite superiore per i valori numerici (il valore deve essere inferiore o uguale a questo valore) |
maxLength | Specifica il numero massimo di caratteri o voci di elenco consentiti. Deve essere uguale o maggiore di zero |
minExclusive | Specifica i limiti inferiori per i valori numerici (il valore deve essere maggiore di tale valore) |
minInclusive | Specifica i limiti inferiori per i valori numerici (il valore deve essere maggiore o uguale a questo valore) |
minLength | Specifica il numero minimo di caratteri o voci di elenco consentiti. Deve essere uguale o maggiore di zero |
pattern | Definisce l'esatta sequenza di caratteri che sono accettabili |
totalDigits | Specifica il numero esatto di cifre consentite. Deve essere maggiore di zero |
whiteSpace | Specifica come spazio bianco (line feed, tabulazioni, spazi e ritorni a capo) viene gestita |