什么是XML信息集 XML Infoset规范
发布时间 - 2025-12-31 00:00:00 点击率:次XML信息集是W3C定义的抽象数据模型,由文档、元素、属性等11类信息项构成,与序列化方式无关,为XML相关规范提供统一语义基础;PSVI是经Schema验证后增强的信息集。
XML信息集(XML Information Set,简称 XML Infoset)是 W3C 制定的一项基础性规范,它不定义语法或格式,而是为良构的 XML 文档提供一个**统一、抽象的数据模型**。换句话说,Infoset 描述的是“XML 文档里有什么”,而不是“它怎么写”或“怎么存”。只要一个 XML 文档符合基本语法规则(well-formed)并正确处理命名空间,它就拥有一个信息集——哪怕它没有关联 DTD 或 Schema,也不需要验证通过。
它由11类信息项构成
Infoset 把 XML 文档拆解为一组逻辑单元,称为“信息项(information items)”,每种对应文档中一类结构成分,并附带明确的属性(如名称、值、位置关系等)。这11类包括:
- 文档信息项(Document Information Item)——每个 Infoset 必有且仅有一个
- 元素信息项(Element Information Item)
- 属性信息项(Attribute Information Item)
- 命名空间信息项(Namespace Information Item)
- 字符信息项(Character Information Item)
- 注释信息项(Comment Information Item)
- PI 信息项(Processing Instruction Information Item)
- 文档类型声明信息项(Document Type Declaration Information Item)
- 未扩展实体引用信息项(Unexpanded Entity Reference Information Item)
- 非解析实体信息项(Unparsed Entity Information Item)
- 格式信息项(Notation Information Item)
它不绑定具体表现形式
Infoset 是与序列化方式无关的。同一个 Infoset 可以用纯文本 XML 1.0 表示,也可以用二进制编码(如 WCF 中的 MTOM 或 Binary XML),甚至能映射到基于事件的 SAX 解析流或树状 DOM 结构。关键在于:不同技术栈只要最终操作的是同一套信息项,就能互认语义。这也是 SOAP、XML Schema、XSLT 2.0 等规范能协同工作的底层基础。
PSVI 是验证后的增强版信息集
当 XML 文档经过 XML Schema 验证时,处理器可对原始 Infoset 进行补充,比如插入缺省属性值、标注类型信息、标记是否为 ID/IDREF 等。这种补充后形成的信息集叫 post-schema-validation infoset(PSVI)。注意:PSVI 是可选行为,且仅 XML Schema 支持;RELAX NG 不做此
类增强,因此不生成 PSVI。
它不是实现模型,而是契约语言
Infoset 明确声明自己不规定接口形式——它不要求必须用树形结构存储,也不强制使用 DOM 或 XPath 模型。你可以用流式解析器、图结构、数据库记录甚至函数式数据流来体现它。它的作用是让不同规范和 API 在讨论“一个元素有没有某个属性”“某个命名空间是否声明过”这类问题时,有共同的语言和边界定义。
# 处理器
# 编码
# 栈
# 命名空间
# xml
# 接口
# Namespace
# Attribute
# 事件
# dom
# 数据库
# 文档
# 可以用
# 的是
# 它不
# 也不
# 有什么
# 序列化
# 就能
# 这类
# 树状
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速生成可下载的建站源码工具?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
html5的keygen标签为什么废弃_替代方案说明【解答】
如何解决hover在ie6中的兼容性问题
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel如何为API生成Swagger或OpenAPI文档
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
EditPlus中的正则表达式 实战(1)
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
java中使用zxing批量生成二维码立牌
油猴 教程,油猴搜脚本为什么会网页无法显示?
大同网页,大同瑞慈医院官网?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何快速搭建安全的FTP站点?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
如何在景安服务器上快速搭建个人网站?
python中快速进行多个字符替换的方法小结
Android仿QQ列表左滑删除操作
如何在腾讯云服务器快速搭建个人网站?
C#如何调用原生C++ COM对象详解
如何在Windows 2008云服务器安全搭建网站?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何快速生成高效建站系统源代码?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
图册素材网站设计制作软件,图册的导出方式有几种?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel中的withCount方法怎么高效统计关联模型数量
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
BootStrap整体框架之基础布局组件
Laravel如何使用withoutEvents方法临时禁用模型事件
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在新浪SAE免费搭建个人博客?
详解MySQL数据库的安装与密码配置
详解Oracle修改字段类型方法总结
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel怎么在Controller之外的地方验证数据
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程

