XSD rajoitukset/Facets
- Edellinen sivu XSD ominaisuudet
- Seuraava sivu XSD monimutkainen elementti
Rajoitus (restriction) määrittelee XML-elementin tai ominaisuuden hyväksyttävät arvot. XML-elementin rajoitus kutsutaan tarkistukseksi (facet).
Arvojen rajoittaminen
Esimerkki määrittelee elementin, jolla on rajoitus ja nimi "age". age:n arvon ei tule olla alle 0 tai yli 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>
Arvojen rajoittaminen joukkoon
Jos haluamme rajoittaa XML-elementin sisällön joukkoon hyväksyttäviä arvoja, meidän on käytettävä luettelorajoitusta (enumeration constraint).
Seuraava esimerkki määrittelee elementin nimeltä "car", jolla on rajoitettu nimi. Hyväksytyt arvot ovat vain: 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>
Yllä oleva esimerkki voidaan myös kirjoittaa seuraavasti:
<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>
Huomautus:Tässä tapauksessa tyyppi "carType" voidaan käyttää muiden elementtien kanssa, koska se ei ole "car"-elementin osa.
Arvojen rajoittaminen joukkoon
Jos haluamme rajoittaa XML-elementin sisällön joukkoon hyväksyttäviä numeroita tai kirjaimia, meidän on käytettävä mallirajoitusta (pattern constraint).
Seuraava esimerkki määrittelee elementin nimeltä "letter", jolla on rajoitettu nimi. Hyväksytyt arvot ovat vain pieniä kirjaimia a-z yksi:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Seuraava esimerkki määrittelee elementin nimeltä "initials", jolla on rajoitettu nimi. Hyväksytyt arvot ovat ison kirjaimen A-Z kolme:
<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>
Seuraava esimerkki määrittelee elementin nimeltä "initials", jolla on rajoitettu nimi. Hyväksytyt arvot ovat ison tai pienen kirjaimen a-z kolme:
<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>
Seuraava esimerkki määrittelee elementin nimeltä "choice", jolla on rajoitettu nimi. Hyväksytyt arvot ovat kirjaimista x, y tai z yksi:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Seuraava esimerkki määrittelee elementin nimeltä "prodid", jolla on rajoitettu nimi. Hyväksytyt arvot ovat viiden arabiallisen numeron sarja, ja jokaisen numeron arvo on 0-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>
Muiden arvojen rajoitusten määrittäminen
Seuraavassa esimerkissä elementti nimeltä "letter" määritellään rajauksella, joka sallii a-z-merkkien pituisen rivin, jossa on nolla tai useita kirjaimia:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Seuraavassa esimerkissä elementti nimeltä "letter" määritellään rajauksella, joka sallii vain yhden tai useamman parin kirjaimia, joissa jokainen pari koostuu pienestä kirjaimesta ja suuresta kirjaimesta. Esimerkiksi "sToP" läpäisee tämän模式的验证, mutta "Stop", "STOP" tai "stop" eivät läpäise:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Seuraavassa esimerkissä elementti nimeltä "gender" määritellään rajauksella, joka sallii vain "male" tai "female":
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Seuraavassa esimerkissä elementti nimeltä "password" määritellään rajauksella, joka sallii vain 8 merkin pituisen rivin, joissa merkit ovat joko isokirjaimia a-z tai pienikirjaimia a-z tai numeroita 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>
Tyhjien merkien rajaus
Jos haluamme sopia tyhjien merkkien käsittelytavan, meidän täytyy käyttää "whiteSpace"-rajauksia.
Seuraavassa esimerkissä elementti nimeltä "address" määritellään rajauksella "whiteSpace", joka on asetettu arvoksi "preserve". Tämä tarkoittaa, että XML-käsittely ei poista minkäänlaisia tyhjiä merkkejä:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Tämä esimerkki määrittelee elementin nimeltä "address" ja rajauksen nimeltä "whiteSpace", joka on asetettu arvoksi "replace". Tämä tarkoittaa, että XML-käsittely poistaa kaikki tyhjät merkit (rivinvaihdot, enterit, välilyönnit ja tabulatyyrit):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Tämä esimerkki määrittää nimeltään "address" olevan elementin, jolla on rajoitus. Tämä whiteSpace rajoitus on asetettu arvoksi "collapse". Tämä tarkoittaa, että XML-käsittelylaite poistaa kaikki tyhjät merkit (rivinvaihdot, takaisinjohtimet, välilyönnit ja tabulaattorit korvataan välilyönnillä, alkuperäiset ja lopulliset välilyönnit poistetaan, ja useat peräkkäiset välilyönnit lyhennetään yhdeksi välilyönniksi):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Pituuden rajoitus
Jos haluat rajoittaa elementin arvon pituutta, sinun täytyy käyttää length, maxLength ja minLength rajoituksia.
Tämä esimerkki määrittää nimeltään "password" olevan elementin, jolla on rajoitus. Arvon täytyy olla tarkka 8 merkin mittainen:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Tämä esimerkki määrittää nimeltään "password" olevan elementin, jolla on rajoitus. Arvon täytyy olla vähintään 5 merkkiä ja korkeintaan 8 merkkiä:
<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>
Datan tyypin rajoitus
Rajoitus | Kuvaus |
---|---|
enumeration | Määritä hyväksyttävien arvojen luettelo |
fractionDigits | Määritä sallittujen suurimman desimaalimäärän enimmäismäärä. Arvon täytyy olla suurempi tai yhtä suuri kuin 0. |
length | Määritä sallittujen merkkien tai luettelon kohteiden tarkka sallittu määrä. Arvon täytyy olla suurempi tai yhtä suuri kuin 0. |
maxExclusive | Määritä lukuarvon yläraja. Sallitut arvot täytyy olla pienemmät kuin tämä arvo. |
maxInclusive | Määritä lukuarvon yläraja. Sallitut arvot täytyy olla pienemmät tai yhtä suuret kuin tämä arvo. |
maxLength | Määritä sallittujen merkkien tai luettelon kohteiden suurin sallittu määrä. Arvon täytyy olla suurempi tai yhtä suuri kuin 0. |
minExclusive | Määritä lukuarvon alaraja. Sallitut arvot täytyy olla suuremmat kuin tämä arvo. |
minInclusive | Määritellään arvon alaraja. Sallitut arvot on oltava suurempia tai yhtä suuria kuin tämä arvo. |
minLength | Määritellään sallittujen merkkien tai luettelojen projektien vähimmäismäärä. On oltava suurempi tai yhtä suuri kuin 0. |
pattern | Määritellään hyväksyttävien merkkien tarkka sarja. |
totalDigits | Määritellään sallittujen arabi numeroiden tarkka määrä. On oltava suurempi kuin 0. |
whiteSpace | Määritellään tyhjien merkkien (uudelleenkirjoitus, enter, välilyönti ja tabulaattori) käsittelytapa. |
- Edellinen sivu XSD ominaisuudet
- Seuraava sivu XSD monimutkainen elementti