是否有不需要固线或结束标记的所有html标记的列表?

时间:2019-07-06 01:56:42

标签: html parsing html-parsing solidus

我为html构建了一个解析器,但是我假设它会遵循只有两种形式的规则:

<foo> </foo>
<foo/>

显然这是错误的。诸如basemetalink之类的标记不需要此标记。 我希望不是这种情况,因为我已经在脚本中找到了类似的内容:

for(var d=b.length,e=b[a];a<d>>1;)

哦,神话般的<d>标签。

因此,我需要将自己设置为白名单,以便忽略。是否有不需要固结或结束标记的标记的完整列表?如果没有,我将不得不重写解析器。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以从WHATWG HTML Living Standard中提取列表。或者,如果愿意,可以使用W3C的HTML 5 Specificationsubsequent draftWikipedia认为,冲突在某种程度上已得到解决,而赞成WHATWG,所以您可能希望使用第一个。

无论如何,请特别注意每个元素描述中的子标题“ text / html中的标签省略”。但是您需要仔细阅读文档,以了解HTML解析的来龙去脉。

注意:不仅可以省略结束标签。也有些元素的 open 标签可以省略。 (经典的例子是ServiceConnection,它几​​乎没有出现在HTML文档中,但是还有很多其他例子。例如,<tbody>。)仅忽略了元素的open标签的事实。不会强制省略元素的close标签,尽管通常是这样。因此,仅凭一系列可变标记就无法做到这一点;您还需要考虑元素包含规则。

此外,即使对于有效的文档来说,完整的解析算法也非常复杂,但标准算法和实际的HTML解析器却更加复杂,因为它们试图优雅地处理不符合标准的网页