讲师中心 微信公众号
AI工具推荐 视频效率加速

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

落婷大大_3488

落婷大大_3488

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

|

596人浏览过

|

来源于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(值空间)的约束规则。实际解析时,是否转成int、boolean或dateTime,取决于你用的解析器(如lxml、xerces、libxml2)和绑定方式(比如xs:integer在Java里可能映射为BigInteger,Python里常是int,但不会自动帮你做类型转换)。

  • xs:string最安全,兼容所有文本,但失去语义校验
  • xs:integer和xs:decimal能校验格式,但注意xs:integer不接受小数点,xs:decimal允许123.00,而xs:float会把123.0解析成123.0E0,容易在比较时出错
  • xs:boolean只认true/false(全小写),1/0或yes/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:00和2023-01-01T12:00:00Z是两个不同值

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

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

  • 数值范围校验必须用xs:minInclusive/xs:maxInclusive,不能靠正则
  • 枚举值用xs:enumeration,但注意大小写敏感,<xs:enumeration value="ON"/>不匹配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:assert、xs: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:duration的P1Y在Java里能转成Period,但在某些C++库中直接抛异常。校验通过不等于能安全取值,这层隔离必须手动补上。

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

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

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

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

3031

2023.10.31

php数据类型
php数据类型

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

554

2025.10.31

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

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

522

2026.02.12

string转int
string转int

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

6519

2023.08.02

css中float用法
css中float用法

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

6707

2024.04.28

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

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

784

2025.10.23

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

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

2130

2023.11.13

java boolean类型
java boolean类型

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

163

2025.11.30

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn