在XML文件头部,是选用1.0版还是1.1版更为合适?
- 内容介绍
- 相关推荐
本文共计764个文字,预计阅读时间需要4分钟。
XML 1.1 几乎没有实际应用场景,连主流解析器(如 Python 的 xml.etree.ElementTree、Java 的 DocumentBuilder、浏览器 DOM 解析)都默认不支持或需显式启用且作为不一致处理。
XML 1.1 唯一“合法”用途:处理含控制字符的遗留数据
XML 1.1 放宽了对某些 C0/C1 控制字符(如 \x01–\x08、\x0B、\x0C、\x0E–\x1F)的限制,允许它们出现在字符数据中(需转义或声明为 CDATA)。但现实是:
- 现代系统几乎不会生成这类数据;若真遇到,优先清洗掉控制字符,而非迁移到 XML 1.1
-
libxml2(被 lxml、PHP、GNOME 等大量依赖)对 XML 1.1 的支持不完整,比如不校验U+0085(NEL)是否合法 - HTTP
Content-Type头不区分 1.0/1.1,服务器和客户端根本不管这个 version 声明
声明 version="1.0" 不等于“强制校验”——它只是提示
XML 声明里的 version 属性本身不触发任何版本特定的语法检查。
本文共计764个文字,预计阅读时间需要4分钟。
XML 1.1 几乎没有实际应用场景,连主流解析器(如 Python 的 xml.etree.ElementTree、Java 的 DocumentBuilder、浏览器 DOM 解析)都默认不支持或需显式启用且作为不一致处理。
XML 1.1 唯一“合法”用途:处理含控制字符的遗留数据
XML 1.1 放宽了对某些 C0/C1 控制字符(如 \x01–\x08、\x0B、\x0C、\x0E–\x1F)的限制,允许它们出现在字符数据中(需转义或声明为 CDATA)。但现实是:
- 现代系统几乎不会生成这类数据;若真遇到,优先清洗掉控制字符,而非迁移到 XML 1.1
-
libxml2(被 lxml、PHP、GNOME 等大量依赖)对 XML 1.1 的支持不完整,比如不校验U+0085(NEL)是否合法 - HTTP
Content-Type头不区分 1.0/1.1,服务器和客户端根本不管这个 version 声明
声明 version="1.0" 不等于“强制校验”——它只是提示
XML 声明里的 version 属性本身不触发任何版本特定的语法检查。

