0

0

XML文件支持的数据类型 XML Schema中的数据类型汇总

煙雲

煙雲

发布时间:2026-02-16 09:43:48

|

476人浏览过

|

来源于php中文网

原创

最常用且最靠谱的是xs:string、xs:integer、xs:decimal、xs:boolean、xs:date、xs:datetime和xs:time;它们分别适用于通用文本、整数、精确小数、布尔值、日期、带时分秒的日期时间及纯时间场景,兼顾校验能力与解析兼容性。

xml文件支持的数据类型 xml schema中的数据类型汇总

XML Schema里哪些数据类型最常用、最靠谱

XML Schema(XSD)本身不定义“运行时数据类型”,它定义的是lexical space(词法空间)和value space(值空间)的约束规则。实际解析时,是否转成intbooleandateTime,取决于你用的解析器(如lxmlxerceslibxml2)和绑定方式(比如xs:integer在Java里可能映射为BigInteger,Python里常是int,但不会自动帮你做类型转换)。

  • xs:string最安全,兼容所有文本,但失去语义校验
  • xs:integerxs:decimal能校验格式,但注意xs:integer不接受小数点,xs:decimal允许123.00,而xs:float会把123.0解析成123.0E0,容易在比较时出错
  • xs:boolean只认true/false(全小写),1/0yes/no是无效值,很多开发者在这里被ValidationException打懵

xs:date vs xs:dateTime:时间字段别乱选

选错会导致解析失败或隐式截断。比如用xs:dateTime声明一个只含日期的字段(如<born>1990-05-21</born>),验证直接报错:cvc-datatype-valid.1.2.1: '1990-05-21' is not a valid value for 'dateTime'

  • 纯日期用xs:date(格式:YYYY-MM-DD)
  • 带时分秒+可选时区才用xs:dateTime(格式:YYYY-MM-DDThh:mm:ss[.sss][Z|±hh:mm])
  • xs:time只校验时间部分,不关心日期,适合“每天14:30开会”这种场景
  • 时区不是可选修饰——它是xs:dateTime值的一部分;2023-01-01T12:00:002023-01-01T12:00:00Z是两个不同值

自定义simpleType的坑:restriction不是万能的

很多人以为用xs:restriction套一层就能“加强类型”,结果发现<pattern value="[A-Z]{3}"></pattern>xs:string有效,但对xs:integerxs:pattern直接报错——因为xs:integer的词法空间不允许正则约束,pattern只能用于基于xs:stringxs:token派生的类型。

Dbsite企业网站管理系统1.5.0
Dbsite企业网站管理系统1.5.0

Dbsite企业网站管理系统V1.5.0 秉承"大道至简 邦达天下"的设计理念,以灵巧、简单的架构模式构建本管理系统。可根据需求可配置多种类型数据库(当前压缩包支持Access).系统是对多年企业网站设计经验的总结。特别适合于中小型企业网站建设使用。压缩包内包含通用企业网站模板一套,可以用来了解系统标签和设计网站使用。QQ技术交流群:115197646 系统特点:1.数据与页

下载
  • 数值范围校验必须用xs:minInclusive/xs:maxInclusive,不能靠正则
  • 枚举值用xs:enumeration,但注意大小写敏感,<enumeration value="ON"></enumeration>不匹配on
  • 如果需要“非空字符串+长度限制+字符集”,老实用xs:restriction base="xs:string",别试图从xs:normalizedString再restrict

XML Schema 1.0 和 1.1 的关键差异点

多数生产环境还在用XSD 1.0,但有人升级解析器后发现xs:assert不生效——那是XSD 1.1特性,主流Java库(如Xerces)默认不开启,Python的lxml要显式传schema_language='XMLSchema11',否则直接忽略断言。

  • XSD 1.0不支持xs:assertxs:alternative,也不支持在xs:element上直接写type + default组合
  • xs:anyType在1.0中是“any content”的兜底类型,在1.1中被明确为union of all simple types,行为更严格
  • 如果你用xs:list定义空格分隔的整数列表(如1 2 3),1.0要求每个item必须满足base type(xs:integer),1.1允许配合xs:assert做跨项校验(比如“总和不能超100”)

真正麻烦的从来不是类型列表记不全,而是同一个XSD文件在不同解析器里表现不一致——比如xs:durationP1Y在Java里能转成Period,但在某些C++库中直接抛异常。校验通过不等于能安全取值,这层隔离必须手动补上。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

311

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

750

2023.08.02

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

590

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

360

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

37

2025.11.30

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

145

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号