XML 1.1 扩展了对 Unicode 控制字符、换行符和命名字符的支持,提升了国际化处理能力,但因兼容性差和工具支持不足,实际应用中仍以 XML 1.0 为主流。

XML 1.1 在设计上是对 XML 1.0 的补充和扩展,主要目的是增强对Unicode字符的支持以及解决某些边缘情况的处理问题。虽然两者在大多数日常使用中差异不大,但在特定场景下这些区别会变得重要。
字符编码与允许的字符范围
XML 1.1 扩展了可接受的字符范围,特别是控制字符的使用:
- XML 1.0 只允许部分 Unicode 控制字符,如 Tab、换行符和回车符(#x9, #xA, #xD)。
- XML 1.1 允许更多 C0 和 C1 控制字符(例如 #x80 到 #x9F),但要求这些字符必须以转义形式(如 )表示,不能直接出现在文档中。
- 这意味着 XML 1.1 更适合处理包含特殊或遗留系统字符的数据流。
换行符的规范化处理
在文本处理中,不同平台使用不同的换行符格式。XML 1.1 对此进行了更严格的定义:
- XML 1.0 仅将 #xA 和 #xD#xA 视为换行,并对 #xD 进行规范化为 #xA。
- XML 1.1 新增支持 #x85(NEL,Next Line)和 #x2028(行分隔符)作为合法的换行符,并在解析时将其统一转换为 #xA。
- 这项改进提升了跨平台文本交换的兼容性,特别是在处理国际化内容时。
名称开头字符的扩展
XML 1.1 修改了元素名、属性名等标识符的起始字符规则:
- XML 1.0 中,名称必须以字母或下划线开头。
- XML 1.1 允许使用更多 Unicode 字符作为名称开头,包括某些代理对(surrogate pairs)和扩展字母。
- 这使得非拉丁语系语言在命名上更加灵活,但也增加了实现复杂度。
兼容性与实际应用
尽管 XML 1.1 提供了更多功能,但其采用率远低于 XML 1.0:
- 绝大多数工具、库和浏览器默认支持 XML 1.0,对 1.1 支持有限或需显式启用。
- XML 1.1 要求更复杂的解析逻辑,导致性能开销略高。
- 由于向后不完全兼容(例如原本非法的字符现在被允许),从 1.0 升级到 1.1 需谨慎评估风险。
基本上就这些。XML 1.1 是一次语义上的演进,重点在于提升国际化支持和字符处理的完整性,但在实践中因兼容性和需求不足,多数系统仍以 XML 1.0 为主流标准。选择哪个版本应根据具体应用场景中的字符集需求和系统支持能力来决定。










