哪些是HTML和XML特殊字符?

时间:2011-08-30 19:50:23

标签: xml http special-characters htmlspecialchars entityreference

1 个答案:

答案 0 :(得分:13)

首先,您要将HTML 4.01 specificationHTML 5 one进行比较。 HTML5与XML的关系比HTML 4.01更紧密(这就是为什么我们有XHTML),因此这个答案将坚持使用HTML 5和XML。

您引用的参考文献在以下几点上都是一致的:

    未指明处理指令时,
  • <应始终用&lt;表示
  • 未指明处理指令时,
  • >应始终用&gt;表示
  • &应始终以&amp;
  • 表示 在<{1}}(仅适用于XML)时
  • 除外

我同意这一点100%。您永远不希望解析器将文字误认为是指令,因此始终对任何非空格(见下文)字符进行编码是一个坚实的想法。好的解析器知道<![CDATA[ ]]>中包含的任何内容都不是指令,因此在那里不需要编码。

在实践中,我从不编码<![CDATA[ ]]>',除非

  • 它出现在属性(XML或HTML)的值
  • 它出现在XML标签的文本中。 ("

这两个规范也同意这一点。

因此,唯一的争论点是<tag>&quot;Yoinks!&quot;, he said.</tag>(空格)。在任一规范中唯一提到的是尝试序列化时。如果没有,您应该始终使用文字(空格)。除非您正在编写自己的解析器,否则我认为不需要进行任何类型的序列化,因此这不是重点。