restriction用于在XML Schema中对simpleType施加取值或格式限制,需嵌套于xs:simpleType内,通过base指定基础类型,并用minLength、pattern、minInclusive等子元素定义约束规则。

XML Schema 中的 restriction 用于对简单类型(simpleType)进行取值范围或格式限制,是定义数据合法性的核心手段。它不改变类型本质,而是在已有类型基础上“收紧”规则。
restriction 必须配合 simpleType 使用
不能直接写在元素上,必须先定义一个带 restriction 的自定义 simpleType,再让元素引用它。常见结构如下:
- 用
<xs:simpleType>包裹<xs:restriction> -
base属性指定基础类型,如xs:string、xs:integer、xs:date - 内部嵌入具体约束子元素,如
<xs:minLength>、<xs:pattern>、<xs:maxInclusive>等
常用 restriction 约束子元素及写法
针对不同基础类型,可组合使用以下约束:
-
字符串限制:用
<minLength value="2"/>、<maxLength value="10"/>、<pattern value="[A-Z][a-z]+"/>(正则匹配首字母大写单词) -
数值限制:用
<minInclusive value="0"/>、<maxExclusive value="100"/>、<totalDigits value="5"/> -
枚举限制:用
<enumeration value="active"/>多次声明允许值,相当于白名单 -
小数精度:对
xs:decimal可加<fractionDigits value="2"/>限定两位小数
在 XML 实例中如何生效
定义好 restricted type 后,需在元素声明中通过 type 属性引用它。例如:
Schema 片段:
<xs:simpleType name="priceType"><xs:restriction base="xs:decimal">
<xs:minInclusive value="0.01"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="price" type="priceType"/>
对应合法 XML 值:<price>19.99</price>;非法值如 19.999 或 -5.0 将被校验拒绝。
注意命名空间和 xsi:schemaLocation 的配套使用
如果 schema 定义了 targetNamespace,XML 实例中必须:
- 声明该命名空间前缀(如
xmlns:tns="http://example.org") - 通过
xsi:schemaLocation关联命名空间 URI 与 .xsd 文件路径 - 确保元素使用正确前缀(如
<tns:price>),否则 restriction 不会被识别










