新闻中心
如何在XSD中创建枚举类型,限制元素只能取预定义列表中的值?
XSD中枚举类型通过xs:restriction嵌套xs:enumeration定义,需基于简单类型限制值域;支持内联定义或命名复用,可应用于字符串、整数等类型,但值必须唯一且为字面量。

在XSD中创建枚举类型,就是用 <restriction></restriction> 套住 <enumeration></enumeration>,把允许的值一个个列出来。核心是定义一个简单类型(simpleType),再在里面限制取值范围。
基础写法:内联定义枚举
直接在元素声明里定义枚举类型,适合只用一次的场景:
<xs:element name="status">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="draft"/>
<xs:enumeration value="pending"/>
<xs:enumeration value="approved"/>
<xs:enumeration value="rejected"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
这样,<status></status> 元素的内容只能是这四个字符串之一,大小写敏感,空白也不允许(除非显式加上 xs:whiteSpace value="collapse")。
复用写法:命名简单类型 + 枚举
如果多个地方要用同一组取值,建议单独定义命名类型,便于维护和复用:
<xs:simpleType name="OrderStatus">
<xs:restriction base="xs:string">
<xs:enumeration value="new"/>
<xs:enumeration value="shipped"/>
<xs:enumeration value="delivered"/>
<xs:enumeration value="cancelled"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="orderStatus" type="OrderStatus"/>
注意:类型名首字母大写是常见约定,有助于区分内置类型。
Openflow
一键极速绘图,赋能行业工作流
88
查看详情
支持数字或布尔枚举
枚举不限于字符串。比如限制为整数:
<xs:simpleType name="PriorityLevel"> <xs:restriction base="xs:integer"> <xs:enumeration value="1"/> <xs:enumeration value="2"/> <xs:enumeration value="3"/> </xs:restriction> </xs:simpleType>
布尔值也可以枚举,但通常不必要(因为 xs:boolean 本身只接受 true/false);若需语义化,可用字符串枚举如 "yes"/"no" 或 "on"/"off"。
小贴士:避免常见坑
- 每个
<enumeration></enumeration>的value属性必须是字面量,不能是表达式或变量 - 重复的
value会导致验证失败(XSD处理器会报错) - 如果想让空字符串也合法,需额外加一条
<enumeration value=""></enumeration> - 中文、特殊符号、带空格的值都可以,但要确保 XML 实例中完全一致(包括空格和大小写)
基本上就这些。枚举本质是值域约束,写清楚、保持唯一、注意类型匹配,就能稳稳生效。
以上就是如何在XSD中创建枚举类型,限制元素只能取预定义列表中的值?的详细内容,更多请关注其它相关文章!
# 有哪些
# 合肥滨湖区网站营销推广
# 湖北公司网站建设推广
# 岳阳贸易网站建设
# 重庆抖音房产seo
# 奉化区网站推广软件
# 泸州seo网络推广营销
# 黄冈正规seo
# 泰州标准网店营销推广
# 阿信seo抖音搜索不到
# 徐州云推广网站开发公司
# 多个
# 就能
# 枚举类型
# 也不
# 如何实现
# 何为
# 复用
# 列表中
# 值域
# 如何在
# red
# app
# 处理器
# xsd
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
QQ邮箱正确登录入口_QQ邮箱官方网站使用地址
铁路12306的积分有效期是多久_铁路12306积分有效期说明
uc手机浏览器网页版入口 uc浏览器手机版便捷登录首页
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
在Qt QML中通过Python字典动态更新TextEdit内容的教程
win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】
Lar*el Form Request中唯一性验证在更新操作中的正确实现
怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除
uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
PHP中SSG-WSG API的AES加密实践:正确使用初始化向量
163邮箱登录密码 163邮箱忘记密码找回
外媒分析《GTA6》定价:卖100美元可以但真没必要!
CSS实现侧边栏导航项全宽圆角悬停背景效果
msn官网入口地址手机版 msn官方网站手机最新链接
Django表单提交验证失败后保持字段值不刷新
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
J*a中实现Go语言select通道多路复用机制
Go语言中对Map值调用带指针接收者方法:原理与最佳实践
PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比
构建轻量级网站内部消息系统:Formspree 集成指南
优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题
Angular中父组件异步更新子组件复选框状态的实践指南
163邮箱注册官网 免费申请163个人邮箱
4399免费游戏网址入口 4399小游戏免费入口点开即玩
高德地图公交到站提醒失败如何解决 高德提醒权限设置
QQ官网正版登录链接 QQ在线登录入口最新
c++20的std::jthread是什么_c++可中断线程与RAII式管理
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
双系统安装时,如何设置默认启动系统? msconfig命令了解一下!
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
在Pyomo中实现基于变量的条件约束:Big-M方法详解
Python字典中优雅地迭代剩余元素的方法
在命令行怎么运行html项目_命令行运行html项目方法【教程】
sublime怎么设置启动时打开的窗口_sublime会话管理与热退出
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
淘宝网网页版登录入口 淘宝官方网页版快捷登录
excel怎么制作工资条 excel快速生成工资条的方法
Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】
b站怎么取消点赞_b站点赞取消操作方法
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
J*aScript中赋值与自增运算符的复杂交互与执行机制
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换


2025-12-07
浏览次数:次
返回列表
PriorityLevel">
<xs:restriction base="xs:integer">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>