【发布时间】:2012-03-02 01:52:48
【问题描述】:
我的经理让我解释为什么我在将字符串传递给XMLStreamWriter 之前调用了 jdom 的checkCharacterData,所以我参考了 XML 规范然后感到困惑。
XML 1.0 和 XML 1.1 表示有效的 XML 字符是“制表符、回车、换行以及 Unicode 和 ISO/IEC 10646 的合法字符”。这听起来很愚蠢:制表符、回车和换行是 Unicode 的合法字符。然后是注释“任何 Unicode 字符,不包括代理块、FFFE 和 FFFF”,它在 XML 1.1 中被修改为指 U+0000 – U+10FFFF 不包括 U+0000、U+D800 – U+DFFF 和U+FFFE – U+FFFF;请注意,不包括 NUL。然后是注释说作者“不鼓励”使用兼容字符,包括一些已经被 BNF 排除的字符。
问题:什么是/曾经是合法的 Unicode 字符? NUL 是有效的 Unicode 字符吗? (我找到了一个 ISO 10646(2010 年第 2 版)的 pdf,它似乎不排除 U+0000。)ISO 10646 或 Unicode 在 2000 版和 2010 版之间是否发生了变化,以包含以前排除的控制字符?而对于 XML,文本如此宽松/草率,而 BNF 严格是有原因的吗?
【问题讨论】:
标签: unicode xml-parsing