XSD中枚举类型通过xs:restriction结合xs:enumeration限定固定取值,仅支持字面量、区分大小写、不可重复,可基于xs:String、xs:Integer等基类型定义,支持复用与默认值,但不支持动态计算或通配符。

XSD中定义枚举类型,核心是用 xs:restriction 套一层 xs:enumeration,限定元素或属性只能取指定的几个固定值。它不支持动态计算或引用变量,所有值必须是字面量,且在同一 restriction 下不能重复。
基础写法:内联定义字符串枚举
最常见的是基于 xs:string 限制一组名称值:
- 用
包裹限制逻辑 -
base="xs:string"指定基类型 - 每个
写一个合法取值,value 必须是字符串字面量(如 “ACTIVE”、”INACTIVE”),不能带空格或特殊字符(除非转义)
示例:
支持其他基类型:整数、布尔等
枚举不限于字符串,也可用于 xs:integer、xs:Boolean、xs:date 等简单类型,只要值格式匹配即可:
- 整数枚举:value 写纯数字,如
- 布尔枚举:只允许
"true"或"false"(注意是小写字符串) - 日期枚举:value 必须符合 xs:date 格式,如
"2025-01-01"
注意:XSD 不校验语义(比如 2025-02-30 虽格式对但非法),仅做字面匹配。
复用与默认值设置
定义好命名 simpleType 后,可在多个地方复用:
- 在
中通过type="StatusType"引用 - 添加
default="PENDING"可设默认值,解析时若该元素缺失则自动填充 - 若需强制存在且不可为空,配合
minOccurs="1"和nillable="false"
注意事项和常见陷阱
实际使用中容易出错的点: