限制用于为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 | 指定如何空白(换行符,制表符,空格和回车符)的处理 |