XML作为可扩展标记语言,在数据传输和配置存储场景中应用广泛,目前主流的版本为1.0和1.1,两个版本在规范设计上有明确的差异,这些差异也体现了XML规范的演进方向。

字符编码支持差异
XML 1.0对字符的支持范围相对有限,仅允许使用Unicode 2.0及之前定义的字符,部分后续新增的Unicode字符在XML 1.0中会被判定为非法字符,这会导致包含这类字符的文档解析失败。
XML 1.1则扩展了对Unicode字符的支持范围,允许使用所有Unicode标准中定义的合法字符,包括后续新增的字符集,解决了XML 1.0在字符兼容性上的不足。不过XML 1.1仍然禁止控制字符的直接使用,除非是特定的空白控制字符。
名称命名规则差异
在XML 1.0规范中,元素名、属性名等XML名称的起始字符只能是字母、下划线或者冒号,后续字符可以是字母、数字、下划线、冒号、连字符或者点号。
XML 1.1放宽了名称的命名限制,允许名称的起始字符和后续字符使用更多的Unicode字符,只要这些字符属于Unicode标准中的字母或者数字类别即可,这让非英文语言的命名更加灵活。
解析器处理要求差异
XML 1.0的解析器要求相对宽松,对于文档中出现的部分不规范内容,部分解析器会做兼容处理,不会直接抛出错误。
XML 1.1对解析器的要求更加严格,要求解析器必须按照规范严格校验文档内容,对于不符合规范的文档必须抛出错误,不允许做兼容处理,这提升了XML文档的规范性。
版本声明与兼容性
XML文档需要在头部声明使用的版本,XML 1.0的声明格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item>示例内容</item>
</root>
XML 1.1的声明格式如下,仅版本号不同:
<?xml version="1.1" encoding="UTF-8"?>
<root>
<item>示例内容</item>
</root>
需要注意的是,XML 1.1并不完全兼容XML 1.0,部分XML 1.0的合法文档在XML 1.1解析器下可能会被判定为非法,因此实际开发中如果没有特殊需求,优先选择XML 1.0版本,因为它的兼容性更好,生态支持更完善。
应用场景选择建议
- 如果文档中需要包含XML 1.0不支持的Unicode字符,或者需要使用非英文的命名规则,可选择XML 1.1版本。
- 如果面向的是通用场景,需要兼容各类旧的解析器和工具,优先选择XML 1.0版本。
- 如果项目已经有明确的版本要求,按照项目规范选择对应的版本即可。