XML Schema中的枚举(enumeration)怎么定义

11次阅读

xml Schema 中的枚举通过 xs:enumeration 限定简单类型只能取预定义固定值,须嵌套于 xs:restriction 内,且所有值类型必须与 base 类型兼容、区分大小写、不可内联或动态加载。

XML Schema中的枚举(enumeration)怎么定义

XML Schema 中的枚举(enumeration)用于限定某个简单类型只能取一组预定义的固定值,常用于限制字符串、整数、布尔等基础类型的合法取值范围。

xs:enumeration 定义枚举值

枚举必须嵌套在 xs:restriction 内,而该 restriction 又必须基于一个已有简单类型(如 xs:Stringxs:Integer 等)。每个允许的值用一个 xs:enumeration 元素声明,其 value 属性指定具体取值。

  • 所有枚举值必须类型一致,且与 base 类型兼容(例如 base 是 xs:integer,value 就不能写 “abc”)
  • 多个枚举值之间是“或”关系,XML 实例中只能选其一
  • 不支持通配、正则或范围混用;若需组合约束(如“语文|数学|英语”且长度≤10),应优先用 xs:pattern

字符串枚举示例:课程名称

以下 Schema 要求 元素值只能是“语文”“数学”或“英语”:

                       

整数枚举示例:状态码

若只允许状态值为 5、7、9,可这样定义:

                      

对应 XML 实例中,7 合法,6seven 均校验失败。

注意事项

  • 枚举值区分大小写,“java” 和 “java” 视为两个不同值
  • 空格会被视为值的一部分,value="语文 "value="语文" 不等价
  • 无法直接在元素声明里内联枚举,必须先定义 xs:simpleType 再引用
  • 不支持动态枚举(如从外部文件读取),所有值必须硬编码在 XSD 中

text=ZqhQzanResources