XML Schema 限定 02

限定

限定用于限制元素和属性可接受的值,对元素的限定被称为 facet。
关于限定的详细列子,请参考该链接XSD 限定 / Facets

限定定义

1
2
3
4
5
6
7
8
<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>

上面的列子定义了 age 元素的值,不能低于 0 或者高于 120. 下面的列子具有同样的效果,只是类型 ageType 可被其他元素使用。

1
2
3
4
5
6
7
<xs:element name="age" type="ageType">
<xs:simpleType name="ageType">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>

枚举约束

将 XML 元素的内容限制为一组可接受的值。

1
2
3
4
5
6
7
<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>

数据类型限定

限定 描述 取值
enumeration 定义可接受值的一个列表
fractionDigits 定义所允许的最大的小数位数。必须大于等于 0。
length 定义所允许的字符或者列表项目的精确数目。必须大于或等于 0。
maxExclusive 定义数值的上限。所允许的值必须小于此值。
maxInclusive 定义数值的上限。所允许的值必须小于或等于此值。
maxLength 定义所允许的字符或者列表项目的最大数目。必须大于或等于 0。
minExclusive 定义数值的下限。所允许的值必需大于此值。
minInclusive 定义数值的下限。所允许的值必需大于或等于此值。
minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于 0。
pattern 定义可接受的字符的精确序列。
totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于 0。
whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。

whiteSpace 的取值:

  • collapse: 移除所有空白字符(换行、回车、空格以及制表符会被替换为空格,开头和结尾的空格会被移除,而多个连续的空格会被缩减为一个单一的空格)
  • replace: 除所有空白字符(换行、回车、空格以及制表符)
  • preserve: 不会移除任何空白字符