限制用於為XML元素或屬性定義可接受的值。 在XML元素的限制被稱為方面。
關於價值觀的限制
下面的例子定義了一個元素"age"有限制。 年齡的值不能小於0低於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>
在一組值限制
為了限制XML元素的一組可接受值的內容,我們將使用枚舉約束。
下面的例子定義了一個元素"car"有限制。 唯一可接受值是: 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>
上面的例子也可以被寫成這樣:
<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:在這種情況下,類型"carType"可以被其他元素一起使用,因為它不是的一部分"car"的元素。
關於價值觀的系列限制
到限制的XML元素的內容來定義一系列的數字或字母,可以使用的,我們將使用圖案約束。
下面的例子定義了一個元素"letter"與限制。 唯一可接受值是由小寫字母A到Z之一:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
下一個例子定義了一個元素"initials"有限制。 唯一可接受值是由大寫字母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>
下一個例子也定義稱為元素"initials"有限制。 唯一可接受的值是從A大寫或小寫字母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>
下一個例子定義了一個元素"choice"有限制。 唯一可接受值是下列字母之一:X,Y或Z:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
下面的例子定義稱為元素"prodid"有限制。 唯一可接受的值是在一個序列中五個數字,並且每個數字必須是在從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>
關於價值觀的一系列其他限制
下面的例子定義了一個元素"letter"與限制。 可接受的值是零或多次出現的從A到Z小寫字母:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
下一個例子也定義稱為元素"letter"與限制。 可接受的值是字母一對或多對,每對由小寫字母後跟大寫字母的。 例如, "sToP"將在該模式驗證,但沒有"Stop"或"STOP"或"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>
下一個例子定義了一個元素"gender"有限制。 唯一可接受值是男性還是女性:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
下一個例子定義了一個元素"password"與限制。 必須有一排正好八個字符,並且這些字符必須是大寫或小寫字母從A到Z,或者從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>
在空白字符的限制
要指定空格字符的處理方式,我們將使用空白約束。
這個例子定義稱為元素"address"與限制。 空白符設置為"preserve" ,這意味著XML處理器不會刪除任何空白字符:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
這個例子也定義了稱為元素"address"與限制。 空白符設置為"replace" ,這意味著XML處理器將取代所有的空白字符(換行符,製表符,空格和回車)與空間:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
這個例子也定義了稱為元素"address"與限制。 空白符設置為"collapse" ,這意味著XML處理器將移除所有空白字符(換行符,製表符,空格,回車用空格代替,開頭和結尾的空格都去掉了,並且多個空格減少到一個空格):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
篇幅所限
到限制元素的值的長度,我們將使用的長度,最大長度,和的minLength約束。
這個例子定義稱為元素"password"與限制。 該值必須正好八個大字:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
這個例子定義了另一個元素"password"與限制。 該值必須是最小的五個字符和最多8個字符:
<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>
對數據類型的限制
約束 | 描述 |
---|---|
enumeration | 定義可接受值的列表 |
fractionDigits | 指定允許小數位的最大數量。 必須等於或大於零的 |
length | 指定允許的字符或列表項的確切數目。 必須等於或大於零的 |
maxExclusive | 指定數值的上限(數值必須小於該值) |
maxInclusive | 指定數值的上限(該值必須小於或等於該值) |
maxLength | 指定允許的字符或列表項的最大數量。 必須等於或大於零的 |
minExclusive | 指定數值的下限(數值必須大於該值) |
minInclusive | 指定了數值的下限(該值必須大於或等於該值) |
minLength | 指定允許的字符或列表項的最小數目。 必須等於或大於零的 |
pattern | 定義了可接受字符的精確序列 |
totalDigits | 指定允許數字的確切人數。 必須大於零 |
whiteSpace | 指定如何空白(換行符,製表符,空格和回車符)的處理 |