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

XML Schema 中的枚举(enumeration)用于限定某个简单类型只能取一组预定义的固定值,常用于限制字符串、整数、布尔等基础类型的合法取值范围。
用 xs:enumeration 定义枚举值
枚举必须嵌套在 xs:restriction 内,而该 restriction 又必须基于一个已有简单类型(如 xs:String、xs:Integer 等)。每个允许的值用一个 xs:enumeration 元素声明,其 value 属性指定具体取值。
- 所有枚举值必须类型一致,且与 base 类型兼容(例如 base 是
xs:integer,value 就不能写 “abc”) - 多个枚举值之间是“或”关系,XML 实例中只能选其一
- 不支持通配、正则或范围混用;若需组合约束(如“语文|数学|英语”且长度≤10),应优先用
xs:pattern
字符串枚举示例:课程名称
以下 Schema 要求 元素值只能是“语文”“数学”或“英语”:
整数枚举示例:状态码
若只允许状态值为 5、7、9,可这样定义:
对应 XML 实例中, 合法, 或 均校验失败。
注意事项
- 枚举值区分大小写,“java” 和 “java” 视为两个不同值
- 空格会被视为值的一部分,
value="语文 "与value="语文"不等价 - 无法直接在元素声明里内联枚举,必须先定义
xs:simpleType再引用 - 不支持动态枚举(如从外部文件读取),所有值必须硬编码在 XSD 中