Ograniczenia są używane do określenia dopuszczalnych wartości dla elementów XML i atrybutów. Ograniczenia dotyczące elementów XML nazywane są aspekty.
Ograniczenia dotyczące wartości
Poniższy przykład definiuje element o nazwie "age" z ograniczeniem. Wartość życia nie może być niższa niż 0 lub większa 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>
Ograniczenia dotyczące zbioru wartości
Aby ograniczyć zawartość elementu XML do zestawu dopuszczalnych wartości, użylibyśmy ograniczenie wyliczenia.
Poniższy przykład definiuje element o nazwie "car" z ograniczeniem. Jedynymi dopuszczalnymi wartościami są: 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że również zostały napisane tak:
<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>
Note: W tym przypadku, rodzaj "carType" może być używany w innych elementów, ponieważ nie jest częścią "car" elementu.
Ograniczenia w szereg wartości
Aby ograniczyć zawartość elementu XML do definiowania szeregu cyfr lub liter, które można wykorzystać, użylibyśmy ograniczenie wzoru.
Poniższy przykład definiuje element o nazwie "letter" z ograniczeniem. Jedyna dopuszczalna wartość jest jednym z literami małymi literami 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>
Kolejny przykład definiuje element o nazwie "initials" z ograniczeniem. Jedyna dopuszczalna wartość wynosi trzy litery wielkie litery 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>
Kolejny przykład definiuje również element zwany "initials" z ograniczeniem. Jedyna dopuszczalna wartość to trzy z małymi lub wielkimi literami 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>
Kolejny przykład definiuje element o nazwie "choice" z ograniczeniem. Jedyna dopuszczalna wartość to jedna z następujących liter: 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>
Kolejny przykład definiuje element o nazwie "prodid" z ograniczeniem. Jedyna dopuszczalna wartość to pięć cyfr w sekwencji, a każda cyfra musi być w zakresie 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>
Inne Ograniczenia szereg wartości
Poniższy przykład definiuje element o nazwie "letter" z ograniczeniem. Akceptowalny wartość wynosi zero lub więcej wystąpień małych liter 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>
Kolejny przykład definiuje również element zwany "letter" z ograniczeniem. Akceptowalny wartość jest jedna lub więcej par liter, każda para składająca się z małą literą sprawy następuje przez górną litery. Na przykład, "sToP" zostaną zatwierdzone przez ten wzór, ale nie "Stop" lub "STOP" lub "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>
Kolejny przykład definiuje element o nazwie "gender" z ograniczeniem. Jedyna dopuszczalna wartość jest mężczyzną czy kobietą:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Kolejny przykład definiuje element o nazwie "password" z ograniczeniem. Nie musi być dokładnie osiem znaków w wierszu, a te znaki muszą być małe lub wielkie litery od A do Z, albo liczby 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>
Ograniczenia w białych znaków
Aby określić, jak spacje znaki powinny być traktowane, chcielibyśmy skorzystać z białymi znakami ograniczenia.
Ten przykład definiuje element o nazwie "address" z ograniczeniem. Białe znaki ograniczenia jest ustawiony na "preserve" , co oznacza, że procesor XML nie usunie żadnych białe znaki:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Przykład ten określa również element o nazwie "address" z ograniczeniem. Białe znaki ograniczenia jest ustawiony na "replace" , co oznacza, że procesor XML zastąpi wszystkie białe znaki (linia zasila, przekładki, spacje i powrót karetki) ze spacjami:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Przykład ten określa również element o nazwie "address" z ograniczeniem. Białe znaki ograniczenia jest ustawiony na "collapse" , co oznacza, że procesor XML usunie wszystkie białe znaki (linia zasila, klapki, spacje, powroty karetki są zastąpione spacjami, wiodące i końcowe spacje są usuwane, a wielokrotne spacje są zredukowane do pojedyncza spacja):
<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ść o wartości w elemencie, nie stosujemy długość, maxLength i ograniczenia MINLENGTH.
Ten przykład definiuje element o nazwie "password" z ograniczeniem. Wartość musi być dokładnie osiem 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 definiuje kolejny element o nazwie "password" z ograniczeniem. Wartość ta musi wynosić co najmniej pięć znaków i maksymalnie osiem 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>
Ograniczenia dotyczące typów danych
Przymus | Opis |
---|---|
enumeration | Określa listę dopuszczalnych wartości |
fractionDigits | Określa maksymalną liczbę miejsc po przecinku dozwolony. Musi być równa lub większa niż zero |
length | Określa dokładną liczbę znaków lub elementów listy dozwolonych. Musi być równa lub większa niż zero |
maxExclusive | Określa górne granice dla wartości numerycznych (wartość musi być mniejsza od tej wartości) |
maxInclusive | Określa górne granice dla wartości numerycznych (wartość musi być mniejsza lub równa tej wartości) |
maxLength | Określa maksymalną liczbę znaków lub elementów listy dozwolonych. Musi być równa lub większa niż zero |
minExclusive | Określa dolne granice dla wartości numerycznych (wartość musi być większa od tej wartości) |
minInclusive | Określa dolne granice dla wartości numerycznych (wartość musi być większa lub równa tej wartości) |
minLength | Określa minimalną liczbę znaków lub elementów listy dozwolonych. Musi być równa lub większa niż zero |
pattern | Określa dokładną sekwencję znaków, które są dopuszczalne |
totalDigits | Określa dokładną liczbę cyfr dozwolony. Musi być większa od zera |
whiteSpace | Określa, jak spacje (linia zasila, zaczepy, spacji i powroty karetki) jest obsługiwana |