xml - XML 名称中是否允许增补字符?

标签 xml validation unicode supplementary

根据specification字符 [#x10000-#xEFFFF] 在 XML 名称中是合法的。然而,W3 验证器说这个 XML 格式不正确:

<?xml version="1.0"?>
<𐐀>value</𐐀>

(属性的名称是一个 Unicode 字符 #x10400 )。一些浏览器,如 Firefox,也会提示它(Chrome 显示 XML,IE 显示空白页面)。是工具错误还是 XML 真的格式不正确?

最佳答案

Is it an error in tools or the XML is really not well-formed?

well formed在最新的规范中,即 XML 1.0 第五版。但它是not well-formed上一版,直到 2008 年才有效。

最初的 XML 1.0 规范(自 1998 年起)将名称字符集锁定为当时 Unicode 标准中定义为字母的字符。这不包括几年后才随 Unicode 3.1 一起出现的 𐐀

XML 1.1 在名称中接受哪些字符方面更加宽松(主要是出于这个原因,以允许来自 future Unicode 版本的字符),这是一件好事。然而,XML 1.1 从未真正流行起来,因此编辑们决定将更新的、更宽松的 namechar 规则从那里移植到 1.0。这是 controversial总而言之,这可能不是一件好事。

这意味着您可以在 XML 1.0 文档的名称中使用 𐐀 并可供已针对第五版更新的解析器子集使用(或者从一开始就从未实现过严格规则),或者您可以在 XML 1.1 文档中使用它们,并可供一组不同的支持 XML 1.1 的解析器使用。

或者,更现实一点,你可以避开那些完全依赖于良好形式的字符,并感到有点悲伤。

关于xml - XML 名称中是否允许增补字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38919409/

相关文章:

javascript - 我如何用 jquery 解析那个 xml 文件

java - 字符串列表的消化器规则

node.js - Mongoose 验证并保存代码

validation - 如何仅在创建对象时应用 Play 2 唯一性验证?

php - preg_replace 为 unicode

unicode - 如何在 VB6 中读取/写入具有 Unicode 文件名的二进制文件

c++ - 从 ASCII 到 Unicode 字符代码的转换 (FreeType2)

java - Android Studio/Java/XML 中的 "Unbound Prefix"是什么?

c# - 在 SubmitChanges() 之前验证 Linq2Sql

xml - 如何自动将 Doc/Docx 转换为单个 XML 文件?