XSD ograniczenia / Facets
- Poprzednia strona Atrybuty XSD
- Następna strona Elementy XSD
Ograniczenie (restriction) służy do definiowania akceptowanych wartości dla elementów XML lub atrybutów. Ograniczenie elementu XML nazywa się faceta.
Ograniczenie wartości
Poniższy przykład definiuje element o nazwie "age" z ograniczonymi wartościami. Wartość "age" nie może być niższa niż 0 ani wyższa niż 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>
Ograniczenie zestawu wartości
Aby ograniczyć zawartość elementu XML do zestawu akceptowanych wartości, należy użyć ograniczeń liczb (enumeration constraint).
Poniższy przykład definiuje element o nazwie "car" z ograniczonymi wartościami. Akceptowane są tylko: 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>
Poniższy przykład można również zapisać jako:
<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>
Komentarz:W tym przypadku typ "carType" może być używany przez inne elementy, ponieważ nie jest częścią elementu "car".
Ograniczenie serii wartości
Aby ograniczyć zawartość elementu XML do serii dostępnych cyfr lub liter, należy użyć ograniczeń wzorców (pattern constraint).
Poniższy przykład definiuje element o nazwie "letter" z ograniczonymi wartościami. Akceptowany jest tylko jeden znak: litera a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Następny przykład definiuje element o nazwie "initials" z ograniczonymi wartościami. Akceptowane są tylko trzy duże litery A - 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>
Następny przykład również definiuje element o nazwie "initials" z ograniczonymi wartościami. Akceptowane są trzy litery, zarówno duże, jak i małe: a - 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>
Następny przykład definiuje element o nazwie "choice" z określonymi ograniczeniami. Akceptowane wartości to litera x, y lub z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Następny przykład definiuje element o nazwie "prodid" z określonymi ograniczeniami. Akceptowane wartości to sekwencja pięciu cyfr arabskich, a każda liczba mieści się w zakresie 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>
Inne ograniczenia dla serii wartości
Poniższy przykład definiuje element o nazwie "letter" z określonymi ograniczeniami. Akceptowane wartości to zero lub więcej liter z zakresu a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Poniższy przykład definiuje element o nazwie "letter" z określonymi ograniczeniami. Akceptowane wartości to para lub kilka par liter, każda para składa się z małej litery połączona z dużą literą. Na przykład, "sToP" przejdzie weryfikację tego wzorca, ale "Stop", "STOP" lub "stop" nie przejdą weryfikacji:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"> </xs:restriction> </xs:simpleType> </xs:element>
Poniższy przykład definiuje element o nazwie "gender" z określonymi ograniczeniami. Akceptowane wartości to "male" lub "female":
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Poniższy przykład definiuje element o nazwie "password" z określonymi ograniczeniami. Akceptowane wartości to wiersz z 8 znaków, które mogą być zarówno dużymi, jak i małymi literami a - z lub cyframi 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>
Ograniczenia znaków białych
Aby określić sposób traktowania znaków białych (whitespace characters), musimy użyć ograniczenia whiteSpace.
Poniższy przykład definiuje element o nazwie "address" z określonymi ograniczeniami. Określona wartość whiteSpace to "preserve", co oznacza, że procesor XML nie usuwa żadnych znaków białych:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Ten przykład również definiuje element o nazwie "address" z ograniczeniem. Ta wartość whiteSpace została ustawiona na "replace", co oznacza, że procesor XML usunie wszystkie znaki białe (w tym wiersze, enter, spacje oraz tabulatory):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Ten przykład również definiuje element o nazwie "address" z ograniczeniem. Ta wartość whiteSpace została ustawiona na "collapse", co oznacza, że procesor XML usunie wszystkie znaki białe (w tym wiersze, enter, spacje oraz tabulatory będą zastąpione spacją, spacje na początku i końcu będą usunięte, a多个连续的空格会被缩减为一个单一的空格):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Ograniczenie długości
Aby ograniczyć długość wartości elementu, musimy użyć ograniczeń length, maxLength oraz minLength.
Ten przykład definiuje element o nazwie "password" z ograniczeniem, który musi być dokładnie 8 znaków długi:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Ten przykład również definiuje element o nazwie "password" z ograniczeniem. Jego wartość musi wynosić co najmniej 5 znaków, a co najmniej 8 znaków:
<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>
Ograniczenie typu danych
Ograniczenie | Opis |
---|---|
enumeration | Definiuje listę akceptowalnych wartości. |
fractionDigits | Definiuje maksymalną liczbę miejsc po przecinku, które są dozwolone. Musi być większa lub równa 0. |
length | Definiuje dokładną liczbę dozwolonych znaków lub elementów listy. Musi być większa lub równa 0. |
maxExclusive | Definiuje górne ograniczenie liczby. Dozwolone wartości muszą być mniejsze niż ta wartość. |
maxInclusive | Definiowanie górnej granicy wartości liczbowych. Dozwolone wartości muszą być mniejsze lub równe tej wartości. |
maxLength | Definiowanie maksymalnej liczby dozwolonych znaków lub elementów listy. Musi być większe lub równe 0. |
minExclusive | Definiowanie dolnej granicy wartości liczbowych. Dozwolone wartości muszą być większe niż tę wartość. |
minInclusive | Definiowanie dolnej granicy wartości liczbowych. Dozwolone wartości muszą być większe lub równe tej wartości. |
minLength | Definiowanie minimalnej liczby dozwolonych znaków lub elementów listy. Musi być większe lub równe 0. |
pattern | Definiowanie dokładnej sekwencji dozwolonych znaków. |
totalDigits | Definiowanie dokładnej liczby miejsc dziesiętnych dozwolonych cyfr. Musi być większe niż 0. |
whiteSpace | Definiowanie sposobu traktowania białych znaków (enter, return, spacje oraz tabulatory). |
- Poprzednia strona Atrybuty XSD
- Następna strona Elementy XSD