XSD omezení/fazety
Omezení se používají k definování přijatelných hodnot pro prvky nebo atributy XML. Omezení prvků XML se nazývají fazety.
Omezení hodnot
Následující příklad definuje prvek nazvaný „věk“ s omezením. Hodnota věku nesmí být nižší než 0 nebo vyšší než 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>
Omezení sady hodnot
K omezení obsahu prvku XML na sadu přijatelných hodnot bychom použili omezení výčtu.
Níže uvedený příklad definuje prvek zvaný „auto“ s omezením. Jediné přijatelné hodnoty jsou: 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>
Výše uvedený příklad by mohl být také napsán takto:
<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>
Poznámka: V tomto případě může být typ "carType" použit jinými prvky, protože není součástí prvku "car".
Omezení řady hodnot
Chcete-li omezit obsah prvku XML na definování řady čísel nebo písmen, které lze použít, použili bychom omezení vzoru.
Níže uvedený příklad definuje prvek nazvaný "dopis" s omezením. Jediná přijatelná hodnota je JEDNO z NÍZKÝCH písmen od a do z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Následující příklad definuje prvek nazvaný „iniciály“ s omezením. Jedinou přijatelnou hodnotou jsou TŘI VELKÁ písmena od a do 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>
Následující příklad také definuje prvek zvaný „iniciály“ s omezením. Jedinou přijatelnou hodnotou jsou TŘI VELKÁ NEBO VELKÁ písmena od a do 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>
Následující příklad definuje prvek nazvaný "volba" s omezením. Jediná přijatelná hodnota je JEDNO z následujících písmen: x, y, OR z:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Následující příklad definuje prvek nazvaný "prodid" s omezením. Jediná přijatelná hodnota je PĚT číslic v sekvenci a každá číslice musí být v rozsahu od 0 do 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>
Další omezení řady hodnot
Níže uvedený příklad definuje prvek nazvaný "dopis" s omezením. Přijatelná hodnota je nula nebo více výskytů malých písmen od a do z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Následující příklad také definuje prvek nazvaný "písmeno" s omezením. Přijatelná hodnota je jeden nebo více párů písmen, přičemž každý pár se skládá z malého písmene následovaného velkým písmenem. Například „sToP“ bude ověřeno tímto vzorem, ale ne „Stop“ nebo „STOP“ nebo „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>
Následující příklad definuje prvek nazvaný „gender“ s omezením. Jediná přijatelná hodnota je muž NEBO žena:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Následující příklad definuje prvek zvaný "heslo" s omezením. V řadě musí být přesně osm znaků a tyto znaky musí být malá nebo velká písmena od a do z nebo čísla od 0 do 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>
Omezení mezer pro znaky
Abychom určili, jak se má zacházet se znaky bílých znaků, použijeme omezení whiteSpace.
Tento příklad definuje prvek nazvaný "adresa" s omezením. Omezení whiteSpace je nastaveno na „zachovat“, což znamená, že procesor XML NEODSTRANÍ žádné prázdné znaky:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Tento příklad také definuje prvek nazvaný "adresa" s omezením. Omezení whiteSpace je nastaveno na "nahradit", což znamená, že procesor XML NAHRADÍ všechny prázdné znaky (odřádkování, tabulátory, mezery a návraty vozíku) mezerami:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Tento příklad také definuje prvek nazvaný "adresa" s omezením. Omezení whiteSpace je nastaveno na „collapse“, což znamená, že procesor XML ODEBRANÍ všechny prázdné znaky (odřádkování, tabulátory, mezery, konce řádku jsou nahrazeny mezerami, mezery na začátku a na konci jsou odstraněny a více mezer se zmenší na jedna mezera):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Omezení délky
K omezení délky hodnoty v prvku bychom použili omezení délky, maxLength a minLength.
Tento příklad definuje prvek zvaný "heslo" s omezením. Hodnota musí mít přesně osm znaků:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Tento příklad definuje další prvek nazvaný "heslo" s omezením. Hodnota musí mít minimálně pět znaků a maximálně osm znaků:
<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>
Omezení pro datové typy
Constraint | Description |
---|---|
enumeration | Defines a list of acceptable values |
fractionDigits | Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero |
length | Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero |
maxExclusive | Specifies the upper bounds for numeric values (the value must be less than this value) |
maxInclusive | Specifies the upper bounds for numeric values (the value must be less than or equal to this value) |
maxLength | Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero |
minExclusive | Specifies the lower bounds for numeric values (the value must be greater than this value) |
minInclusive | Specifies the lower bounds for numeric values (the value must be greater than or equal to this value) |
minLength | Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero |
pattern | Defines the exact sequence of characters that are acceptable |
totalDigits | Specifies the exact number of digits allowed. Must be greater than zero |
whiteSpace | Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled |