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 等简单类型,只要值格式匹配即可:
"true" 或 "false"(注意是小写字符串)"2025-01-01"
注意:XSD 不校验语义(比如 2025-02-30 虽格式对但非法),仅做字面匹配。
定义好命名 simpleType 后,可在多个地方复用:
中通过 type="StatusType" 引用default="PENDING" 可设默认值,解析时若该元素缺失则自动填充minOccurs="1" 和 nillable="false"
实际使用中容易出错的点: