1

我正在尝试将一些 XML 转换为 HTML。XML 仅包含映射到 HTML 标记的少数已知元素。我需要对文本节点进行 html 编码吗?

假设我们只使用 HTML 标签,有效的 XML 也是有效的 HTML 吗?

4

2 回答 2

3

假设我们只使用 HTML 标签,有效的 XML 也是有效的 HTML 吗?

不,这是一个简单的例子。

<div>
  <span/>
</div>

这是格式良好且有效的 XML。在任何版本的 HTML 中,它都不是有效的 HTML(处理为 XHTML 时除外)。

这并不是说 HTML 解析器不会处理它,但这不是一个好的测试。HTML 解析器将处理任何字节序列,无论是否有效。

于 2013-10-08T08:37:59.523 回答
0

假设我们只使用 HTML 标记,那么有效的* XML 也是有效的 HTML 吗?

*请注意,“有效”“格式良好”不同。有效性是一种属性,它需要格式正确并与 DTD 或模式进行成功比较。格式正确仅意味着语法正确,这就是您在这里的意思。

是的。HTML 使用了一些 XML 中不存在的约定(显着的未封闭标签、未编码的标签主体(如<script>、名称空间)不受支持、不正确的标签嵌套被掩盖),但所有东西都被认为是格式良好的、仅使用 HTML 标记的普通 (!) XML名称将被 HTML 解析器理解。

Vanilla 在这种情况下意味着:没有自定义 DTD,没有自定义命名字符实体。

我需要对文本节点进行 html 编码吗?

不可以。只要正确声明了编码,所有在某种编码(例如 UTF-8)中有效的字符在 XML 和 HTML 中都是可接受的。字符转义方案是兼容的,因此 eg &#160;(or &xA0;) 将表示 XML 和 HTML 中的不间断空格。将不间断的空格逐字(即作为单字节xA0)写入文本也可以。除了、、和之外的命名字符实体在 XML 中不受支持,而XML 可以使用的所有编号字符实体都可以在 HTML 中工作。这意味着您不会在那里遇到问题。&lt;&gt;&amp;&quot;&apos;

未声明编码的 XML 将默认为 UTF-8。只要您对 HTML 使用相同的编码,就应该将所有文本节点和属性值保留原样。

于 2013-10-08T08:03:59.063 回答