我正在尝试将一些XML转换为HTML。 XML仅包含映射到HTML标记的一些已知元素。我需要对文本节点进行html编码吗?
假设我们只使用HTML标记,有效的XML也是有效的HTML吗?
答案 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中都是可接受的。字符转义方案是兼容的,例如,  
(或&xA0;
)将代表XML和HTML中的不间断空格。将非破坏空间逐字(即单字节xA0
)写入文本也可以。除<{1}}之外的命名字符实体,<
,>
,&
和"
在XML中不受支持,而所有 XML可以使用的编号字符实体将在HTML中工作。这意味着你不会遇到问题。
未声明编码的XML将默认为UTF-8。将所有文本节点和属性值保留为,只要对HTML使用相同的编码就不会有问题。