了解了国外的内容解析令牌规则(Understanding rules for parsing tok

2019-09-30 21:12发布

我有它关系到在条件执行指令的阶段的问题。 我不太明白每一个指示装置以及在执行时。 与UA的帮助的例子是在这种情况下非常有用。

这里是由一块规格 :

  • 开始标记下列之一:B,大,块引用,身体,BR,中心,代码,DD,格“DL”, “DT”, “EM”, “嵌入”, “H1”, “H2”,“ H3" , “H4”, “H5”, “H6”, “头”, “HR”, “我”, “IMG”, “礼”, “上市”, “菜单”, “元”, “NOBR” “OL”, “p”, “前”, “红宝石”, “S”, “小”, “跨越”, “强”, “罢工”, “子”, “SUP”, “表”,“ TT”, “U”, “UL”, “VAR”
  • 起始标记的名称是“字体”,如果令牌有一个名为“色”,“面子”的任何属性,或“大小”

    解析错误。

    如果解析器的HTML片段分析算法最初创建,然后作为在下面的“其他开始标记”项说明。 (片段情况下)

    除此以外:

    从流行开元素堆栈的元素,然后保持从开放元素的堆栈弹出更多的元素,直到当前节点是MATHML文本的结合点,一个HTML的结合点,或者在HTML命名空间的元素。

    然后,重新处理令牌。

为了避免误解,我叫什么写在我的报价通常的字体说明。 在说明书中也有类似的地方,但它是我很难正确地解释它们,因为它不是在什么点有差异明显的。

请看“解析错误” - 链接指向错误的章,没有具体的错误。 如何利用这个机会?

接下来报价:

如果解析器的HTML片段分析算法最初创建,然后作为在下面的“其他开始标记”项说明。 (片段情况下)

请问这句话是指“解析错误”或者是完全不同的?

接下来,我们看到的题词“Othewise” - 这告诉我们,所有的这些指令不能同时执行。 但是,尽管这个问题是相同的,报价:

从流行开元素堆栈的元素,然后保持从开放元素的堆栈弹出更多的元素,直到当前节点是MATHML文本的结合点,一个HTML的结合点,或者在HTML命名空间的元素。

然后,重新处理令牌。

请问这句话是指“解析错误”或者是完全不同的?

让我们来总结一下:只有2执行的指令,其中之一的条件下对执行parser was originally created for the HTML fragment parsing algorithm ,如果前面的指令不通过测试执行其他指令。 而这一切的一般是“解析错误”。

但尽管这样,即使我正确所说的一切,请给我这个例子或条件的满足那个,甚至本身让我难以说明的理解。


更新1

我认为需要补充的问题,这样就可以充分利用它。

正如你可能已经注意到了,我们坐在章分析国外的内容。 正如你可以理解,当我们分析在国外内容内容本章的目的是,与外国内容的全部就是在节点SVG或数学。

所以我们可以说,我们是坐在节点SVG在这SVG我们把任何标记从调用解析错误列表。 刚刚尝试写这样的: <svg><p>Hello</p></svg> -结果不会让你久等了,你会看到<p>Hello</p>会跳出SVG节点和之后的站<svg></svg><p>Hello</p> 。 而没有这种行为说明了什么呢? 正确! 第二! 然后出现的问题,以及如何再现所有同样的事情的第一个项目?

如何描述一个项目的行为:

如果解析器的HTML片段分析算法最初创建,然后作为在下面的“其他开始标记”项说明。 (片段情况下)

Answer 1:

在规格解析错误链接看起来很奇怪。 规范链接的早期版本https://w3c.github.io/html/syntax.html#parse-errors这使得更多的意义对我来说。

如果解析器的HTML片段分析算法最初创建,然后作为在下面的“其他开始标记”项说明。 (片段情况下)

当解析器解析HTML片段,这是解析器应该提高解析错误后与令牌做的下一件事。 这是独立的分析错误的募集。

除此以外 ...

即当解析器解析整个HTML文档,这是未来的事情,解析器应该提高解析错误后与令牌做。 这是独立的分析错误的募集。

看文档解析和片段的情况下解析之间的差看到这个例子。 您将需要使用Firefox或边缘,如Chrome浏览器不会出现在这里遵循的规范。 你将需要使用的开发工具来检查创建的DOM。

我们有两个div,请求这两者含有<svg><p>Hello</p></svg>中,第一被分析为解析文档,所述第二通过的innerHTML加入。 因此,第二使用情况片段解析和放<p>元件的内部<svg>元素。 在第一个div中, <p>元件的后出现<svg>元素。

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>Test case</title> </head> <body> <div class="parsed normally"><svg><p>Hello</p></svg></div> <div class="parsed fragment case"></div> <script> document.querySelector(".parsed.fragment.case").innerHTML = "<svg><p>Hello</p></svg>"; </script> </body> </html> 



文章来源: Understanding rules for parsing tokens in foreign content