XML Schema中的约束(restriction)怎么用

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

XML Schema 中的 restriction 用于对简单类型(simpleType)进行取值范围或格式限制,是定义数据合法性的核心手段。它不改变类型本质,而是在已有类型基础上“收紧”规则。

restriction 必须配合 simpleType 使用

不能直接写在元素上,必须先定义一个带

restriction 的自定义 simpleType,再让元素引用它。常见结构如下:

  • 包裹
  • base 属性指定基础类型,如 xs:stringxs:integerxs:date
  • 内部嵌入具体约束子元素,如

常用 restriction 约束子元素及写法

针对不同基础类型,可组合使用以下约束:

  • 字符串限制:用 (正则匹配首字母大写单词)
  • 数值限制:用
  • 枚举限制:用 多次声明允许值,相当于白名单
  • 小数精度:对 xs:decimal 可加 限定两位小数

在 XML 实例中如何生效

定义好 restricted type 后,需在元素声明中通过 type 属性引用它。例如:

Schema 片段:


  
    
    gits value="2"/>
  


对应合法 XML 值:19.99;非法值如 19.999-5.0 将被校验拒绝。

注意命名空间和 xsi:schemaLocation 的配套使用

如果 schema 定义了 targetNamespace,XML 实例中必须:

  • 声明该命名空间前缀(如 xmlns:tns="http://example.org"
  • 通过 xsi:schemaLocation 关联命名空间 URI 与 .xsd 文件路径
  • 确保元素使用正确前缀(如 ),否则 restriction 不会被识别