XSD rajoitukset / Facets

Rajoitus (restriction) käytetään XML-elementin tai ominaisuuden hyväksyttävien arvojen määrittämiseen. XML-elementin rajoitus kutsutaan toiseksi (facet).

Arvojen rajoittaminen

Seuraava esimerkki määrittelee yhden rajoitetun nimeltään "age" elementin. Age-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

Jos haluamme rajoittaa XML-elementin sisällön joukosta hyväksytyille arvoille, meidän on käytettävä luettelo-rajoitusta (enumeration constraint).

Seuraava esimerkki määrittelee yhden rajoitetun nimeltään "car" elementin. 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 kirjoittaa myös 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

Jos haluamme määrittää XML-elementin sisällön rajoitetuksi joukosta käytettävissä olevia numeroita tai kirjaimia, meidän on käytettävä malli-rajoitusta (pattern constraint).

Seuraava esimerkki määrittelee yhden rajoitetun nimeltään "letter" elementin. Hyväksytyt arvot ovat vain pieniä kirjaimia a-z yksi kirjain:

<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 yhden rajoitetun nimeltään "initials" elementin. Hyväksytyt arvot ovat isojen kirjainten A-Z kolmea kirjainta:

<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 yhden rajoitetun nimeltään "initials" elementin. Hyväksytyt arvot ovat isojen tai pienien kirjainten a-z kolmea kirjainta:

<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äärittää elementin nimeltä "choice", jolla on määritelty rajaus. Hyväksyttävät arvot ovat kirjaimet x, y tai z yhdestä:

<xs:element name="choice">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="[xyz]"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Seuraava esimerkki määrittää elementin nimeltä "prodid", jolla on määritelty rajaus. Hyväksyttävät arvot ovat viiden arabian numeron mittainen 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 rajoitukset

Esimerkki määrittää elementin nimeltä "letter", jolla on määritelty rajaus. Hyväksyttävät arvot ovat a-z-merkkien yhden tai useamman merkin mittaiset merkkijonot:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="([a-z])*"/>
  </xs:restriction>
</xs:simpleType>
</xs:element>

Esimerkki määrittää elementin nimeltä "letter", jolla on määritelty rajaus. Hyväksyttävät arvot ovat 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 tarkistusta:

<xs:element name="letter">
<xs:simpleType>
  <xs:restriction base="xs:string">
    <xs:pattern value="([a-z][A-Z])+">
  </xs:restriction>
</xs:simpleType>
</xs:element>

Esimerkki määrittää elementin nimeltä "gender", jolla on määritelty rajaus. Hyväksyttävät arvot ovat 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>

Esimerkki määrittää elementin nimeltä "password", jolla on määritelty rajaus. Hyväksyttävät arvot ovat 8 merkin mittaiset merkkijono, 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 määrittää tyhjien merkkien (whitespace characters) käsittelyn tavan, meidän täytyy käyttää whiteSpace-rajausta.

Esimerkki määrittää elementin nimeltä "address", jolla on määritelty rajaus. Tämä whiteSpace-rajaus on asetettu arvoon "preserve", mikä tarkoittaa, että XML-käsittely ei poista minkäänä tahansa tyhjää merkkiä:

<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äärittää myös elementin nimeltä "address", jolla on rajoitus. Tämä whiteSpace rajoitus on asetettu "replace", mikä tarkoittaa, että XML-käsittelijä poistaa kaikki tyhjät merkit (lopetus符、enter符、avaruudet 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ää myös elementin nimeltä "address", jolla on rajoitus. Tämä whiteSpace rajoitus on asetettu "collapse", mikä tarkoittaa, että XML-käsittelijä poistaa kaikki tyhjät merkit (lopetus符、enter符、avaruudet ja tabulatyyrit korvataan avauksella, alkuperäiset ja lopulliset avaukset poistetaan, ja useat peräkkäiset avaukset lyhennetään yhdeksi ainoaksi avaukseksi):

<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ää elementin nimeltä "password", jolla on rajoitus. Arvon täytyy olla tarkalleen 8 merkkiä:

<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ää myös elementin nimeltä "password", jolla on rajoitus. Arvon täytyy olla vähintään 5 ja enintään 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ä sallitun suurimmasta desimaalimäärästä. Tämä täytyy olla suurempi tai yhtä suuri kuin 0.
length Määritä sallitun merkkien tai luettelon kohteiden tarkka määrä. Tämä täytyy olla suurempi tai yhtä suuri kuin 0.
maxExclusive Määritä lukuarvon yläraja. Sallitut arvot täytyy olla pienempiä tästä arvosta.
maxInclusive Määritellään arvon yläraja. Sallitut arvot on oltava pienemmät tai yhtä pieniä kuin tämä arvo.
maxLength Määritellään sallittujen merkkien tai luettelojen listan enimmäismäärä. On oltava suurempi tai yhtä suuri kuin 0.
minExclusive Määritellään arvon alaraja. Sallitut arvot on oltava suurempia 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 listan vähimmäismäärä. On oltava suurempi tai yhtä suuri kuin 0.
pattern Määritellään hyväksyttävien merkkien tarkka järjestys.
totalDigits Määritellään sallittujen arabialukujen tarkka määrä. On oltava suurempi kuin 0.
whiteSpace Määritellään tyhjien merkkien (uudelleenkirjoitus, palautusmerkki, välilyönti ja tabulaattori) käsittelytapa.