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

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










