Ograniczenia/Facets w XSD
- Poprzednia strona Atrybuty XSD
- Następna strona Kompozytne elementy XSD
Ograniczenia (restriction) służą do określenia akceptowalnych wartości dla elementów XML lub atrybutów. Ograniczenia elementów XML nazywane są cechami.
Ograniczenia wartości
Poniżej znajduje się przykład definiujący element o nazwie "age" z ograniczeniami. 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 dozwolonych wartości, należy użyć ograniczeń liczbowych (enumeration constraint).
Poniższy przykład definiuje element o nazwie "car" z ograniczeniem. Akceptowane wartości to 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>
Powyż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 szeregu wartości
Aby ograniczyć zawartość elementu XML do szeregu dozwolonych cyfr lub liter, należy użyć ograniczeń wzorcowych (pattern constraint).
Poniższy przykład definiuje element o nazwie "letter" z ograniczeniem. Akceptowane wartości to tylko jedna mała 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 ograniczeniem. Akceptowane wartości to 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 ograniczeniem. Akceptowane wartości to trzy duże lub małe litery 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 ograniczeniem. 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 ograniczeniem. Akceptowane wartości to sekwencja pięciu cyfr arabskich, gdzie każda liczba ma zakres 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 określenia dla serii wartości
Poniższy przykład definiuje element o nazwie "letter" z określonymi cechami. Akceptowalne wartości to zero lub kilka 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 cechami. Akceptowalne 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 cechami. Akceptowalne 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 cechami. Akceptowalne wartości to wiersz z 8 znaków, które muszą być dużymi lub 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>
Określenie białych znaków
Aby określić sposób traktowania białych znaków (białych znaków), musimy użyć cechy whiteSpace.
Poniższy przykład definiuje element o nazwie "address" z określonymi cechami. Cecha whiteSpace ustawiona jest na "preserve", co oznacza, że przetwornik XML nie usunie żadnych białych znaków:
<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 określonymi cechami. Określona cecha whiteSpace ustawiona jest na "replace", co oznacza, że przetwornik XML usunie wszystkie białe znaki (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. WhiteSpace ograniczenie ustawione na "collapse", co oznacza, że procesor XML usunie wszystkie znaki białe (nowe wiersze, znaki return, 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>
Ograniczenia 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órego wartość musi być dokładnie 8 znaków:
<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. 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órną granicę wartości liczbowych. Dozwolone wartości muszą być mniejsze niż ta wartość. |
maxInclusive | Definiuje górną granicę wartości liczbowych. Dozwolone wartości muszą być mniejsze lub równe tej wartości. |
maxLength | Definiuje maksymalną liczbę dozwolonych znaków lub elementów listy. Musi być większa lub równa 0. |
minExclusive | Definiuje dolną granicę wartości liczbowych. Dozwolone wartości muszą być większe niż ta 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ększa lub równa 0. |
pattern | Definiowanie dokładnej sekwencji znaków akceptowanych. |
totalDigits | Definiowanie dokładnej liczby miejsc dziesiętnych dozwolonych cyfr. Musi być większa niż 0. |
whiteSpace | Definiowanie sposobu traktowania białych znaków (enter, return, spacje oraz tabulatory) |
- Poprzednia strona Atrybuty XSD
- Następna strona Kompozytne elementy XSD