在解析html时,我是否需要注意不需要solidus的自动关闭标记(具有关闭标记)?

在解析html时,我是否需要注意不需要solidus的自动关闭标记(具有关闭标记)?,html,parsing,xml-parsing,html-parsing,solidus,Html,Parsing,Xml Parsing,Html Parsing,Solidus,HTML中有一些标记可以在没有solidus的情况下自动关闭。例如: 这是有效的。因此,不需要这样做: 或 foo 对于这些不需要索利多金币的指定标记,假设我遇到: 我是否可以假设没有相应的,或者我需要解析文档的其余部分并自行确定?我知道这是一个非常吓人的文档。但我认为,至少阅读以下相关链接会对您有所帮助 特别是,你会看到有一个,关于这个部分说: Void元素只有一个开始标记;不得为空心图元指定结束标记 因此,您的第二个示例中,文本foo似乎是元素的内容,实际上是欺骗性的。元素在遇

HTML中有一些标记可以在没有solidus的情况下自动关闭。例如:


这是有效的。因此,不需要这样做:


foo
对于这些不需要索利多金币的指定标记,假设我遇到:


我是否可以假设没有相应的
,或者我需要解析文档的其余部分并自行确定?

我知道这是一个非常吓人的文档。但我认为,至少阅读以下相关链接会对您有所帮助

特别是,你会看到有一个,关于这个部分说:

Void元素只有一个开始标记;不得为空心图元指定结束标记

因此,您的第二个示例中,文本
foo
似乎是元素的内容,实际上是欺骗性的。元素在遇到文本之前已经关闭,因此文本是父元素的内容(如果可能的话)。显式结束标记是一个错误,应该忽略

尽管void元素在HTML5中不需要自动关闭,但它们确实需要在XHTML中自动关闭,因此常见的语法是


注意:(以下内容是在我觉得需要一个精确的HTML解析器时编写的。但我会保留它,尽管它可能看起来有点激进,因为我认为它确实对(试图)编写HTML解析器的人有一些一般性的建议。)

我知道引用的标准是一个庞大的文档,有时令人困惑,而且总是很复杂。这使得编写HTML解析器成为一项挑战。但没有捷径可走。如果要编写兼容的解析器,必须阅读标准。如果您不太关心法规遵从性,那么就不应该问什么结构是符合法规的(但这样您就失去了投诉产生不符合法规的HTML的内容创建者的权利)

开源解析器也是以库的形式存在的,因此显然不需要编写新的解析器。另一方面,没有什么比编写解析器更能教会您关于这项任务的知识了,我尊重任何承诺这样做的人。我不认为这是一个项目,我会承担在这一点上。如果您想这样做,请从阅读标准开始。另外,考虑加入相关的邮件列表,或者至少进行一些讨论。祝你好运

p.S.:另一个有用的资源是Mozilla开发者网络(MDN)文档,链接自WHATWG文档。例如,请参阅其关于的一章,特别是技术规格部分。

我知道这是一份非常吓人的文件。但我认为,至少阅读以下相关链接会对您有所帮助

特别是,你会看到有一个,关于这个部分说:

Void元素只有一个开始标记;不得为空心图元指定结束标记

因此,您的第二个示例中,文本
foo
似乎是元素的内容,实际上是欺骗性的。元素在遇到文本之前已经关闭,因此文本是父元素的内容(如果可能的话)。显式结束标记是一个错误,应该忽略

尽管void元素在HTML5中不需要自动关闭,但它们确实需要在XHTML中自动关闭,因此常见的语法是


注意:(以下内容是在我觉得需要一个精确的HTML解析器时编写的。但我会保留它,尽管它可能看起来有点激进,因为我认为它确实对(试图)编写HTML解析器的人有一些一般性的建议。)

我知道引用的标准是一个庞大的文档,有时令人困惑,而且总是很复杂。这使得编写HTML解析器成为一项挑战。但没有捷径可走。如果要编写兼容的解析器,必须阅读标准。如果您不太关心法规遵从性,那么就不应该问什么结构是符合法规的(但这样您就失去了投诉产生不符合法规的HTML的内容创建者的权利)

开源解析器也是以库的形式存在的,因此显然不需要编写新的解析器。另一方面,没有什么比编写解析器更能教会您关于这项任务的知识了,我尊重任何承诺这样做的人。我不认为这是一个项目,我会承担在这一点上。如果您想这样做,请从阅读标准开始。另外,考虑加入相关的邮件列表,或者至少进行一些讨论。祝你好运


p.S.:另一个有用的资源是Mozilla开发者网络(MDN)文档,链接自WHATWG文档。例如,请参阅其关于的章节,特别是技术规格部分。

为什么您关心它是否存在?@Alohci如果它存在,那么我需要查找嵌套的标记。如果不存在,那么我就不必担心它。你是说嵌套元素。不,正如rici所说,元素不会嵌套。如果你的解析器确实遇到这样的结束标记,就把它扔掉。你为什么关心它是否存在?@Alohci如果它存在,那么我需要寻找嵌套的标记。如果不存在,那么我就不必担心它。你是说嵌套元素。不,正如rici所说,元素不会嵌套。如果您的解析器确实遇到这样的结束标记,就扔掉它。我只想声明,作为记录,我丧失了投诉内容创建者生成不符合HTML的权利。当然,我对构造感兴趣,但在研究这个问题时,我被告知放弃编写一个能够准确跟踪和分析数据的解析器