有效的XML也是有效的HTML

时间:2013-10-08 08:01:30

标签: html xml

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

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

2 个答案:

答案 0 :(得分:3)

  

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

没有。这是一个简单的例子。

<div>
  <span/>
</div>

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

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

答案 1 :(得分:0)

  

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

* 请注意,“valid”“格式良好”不同。有效性是一种需要格式良好并且与DTD或模式成功比较的属性。格式良好只意味着句法正确性,这就是你的意思。

是。 HTML使用XML中不存在的一些约定(突出显示未封闭的标记,未编码的标记体,如<script>,命名空间不受支持,不正确的标记嵌套被掩盖)但所有事物都被认为是格式良好的,vanilla(!)XML HTML解析器将理解仅使用HTML标记名称。

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

  

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

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

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