【发布时间】:2018-06-14 16:29:12
【问题描述】:
我正在使用在其核心中使用 XML 的文本/HTML 差异引擎,但我们正在输入 HTML5 数据,我想知道如何处理不需要在 HTML5 中关闭但必须关闭的标签在 XML 中。例如:
<img alt="" height="239" src="http://example.com/image.png" width="272">
我是否需要手动转换每个标签(就像this example)?
有没有工具可以为我做到这一点?并省去逃避所有自闭合 HTML 标记的麻烦?
例如,xml_parse() 运行以下代码,就像它有错误一样,但 body 有一个有效的 HTML,它是无效的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html [<!ENTITY Aacute "Á">]>
<body>
<div>
<figure class="table ">
<figcaption>
<p class="table_number"></p>
<p class="table_title" epub:type="title"></p>
</figcaption>
<table class="code ">
<tr>
<td width="50">
<img alt="" height="239" src="http://example.com/image.png" width="272">
</td>
</tr>
</table>
</figure>
</div>
</body>
【问题讨论】:
-
它们应该在 HTML 中关闭,仅仅因为“现代”浏览器足够聪明,可以关闭它们并不意味着不关闭它们很酷。这是我的意见。
-
@ArtisticPhoenix,感谢您的评论,但在我的情况下这是不可能的。我们的数据已经在数据库中,无法更新。有很多遗留的 html 垃圾。
-
@ArtisticPhoenix — 它们不应该有
/字符。仅仅因为规范要求现代浏览器忽略它们,并不意味着浪费字节存储和发送它们很酷。 -
问题中的代码不是有效的 HTML。
-
确实,您在其中显示的代码是 XML 和 HTML5 的奇怪混合。如果是 HTML,则没有
<?xml...行,而 doctype 行将 exactly<!DOCTYPE html>。 OTOH 如果它是 XML,它将有一个正确关闭的<img />标记。你所拥有的是一种奇怪的混合物,没有标准工具可能解析。
标签: php html xml validation parsing