XSD 限制
-
对值的限制
限制用于定义 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" 的元素。 唯一可接受的值是:奥迪,高尔夫,宝马:<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>
注意:在这种情况下,"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 到 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";唯一可接受的值为 male(男性)或female(女性):<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>
-
对空白字符的限制
为了指定应该如何处理空格字符,我们将使用 whiteSpace 约束。本示例定义了一个有限制的名为 "address" 的元素; whiteSpace 约束设置为 "preserve",这意味着 XML 处理器将不会删除任何空格字符:<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
此示例还定义了一个带有限制的名为 "address" 的元素。 whiteSpace 约束设置为 "replace",这意味着 XML 处理器将使用空格替换所有空白字符(换行符,制表符,空格和回车符):<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
此示例还定义了一个带有限制的名为 "address" 的元素。 whiteSpace 约束设置为 "collapse",这意味着 XML 处理器将删除所有空白字符(换行符,制表符,空格,回车符替换为空格,删除前导和尾随空格,并将多个空格减少为 一个空格):<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
-
长度限制
为了限制元素中值的长度,我们将使用 length,maxLength 和 minLength 约束。本示例定义了一个带有限制的名为 "password" 的元素。 该值必须正好是八个字符:<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
此示例定义了另一个带有限制的元素 "password"。 该值必须至少为五个字符,最大为八个字符:<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 指定如何处理空格(换行符,制表符,空格和回车符)