在HTML规范中,有一个称为自定义元素的概念.这些元素的名称应该遵循一个明确的表达方式.但是,在浏览器中打开编辑器之后,我们可以安全地编写不遵循这些规则的元素,或者只是创建一个包含不符合此规则的元素的简单页面.例如,<redcar> </redcar>.为什么允许这样做并且不会导致任何错误?毕竟,如果我们写这样的东西:<~hello> </~hello>那么开始标记将被视为文本,结束标记将被注释掉.无论如何,您需要能够解释此行为的特定链接.
一个有效的自定义的元素名称是符合以下所有要求的字符的名称序列:
- name必须与PotentialCustomElementName生产匹配:
PotentialCustomElementName :: =
[a-z] (PCENChar)* '-' (PCENChar)*PCENChar :: =
"-" | "." | [0-9] | "_" | [a-z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]这使用XML规范中的EBNF表示法.[XML]
- 名称不得为以下任何一项:
annotation-xmlcolor-profilefont-facefont-face-srcfont-face-urifont-face-formatfont-face-namemissing-glyph
目前还不清楚你认为错误是什么.
HTML解析主要面向永不抛出原则,并尝试将所有内容转换为有效的内容.
在您的特定情况下,您创建的是HTMLUnknownElement,这遵循规范:
HTML命名空间中具有名称名称的元素的元素接口确定如下:
如果名称为
applet,bgsound,blink,isindex,keygen,multicol,nextid,或spacer,然后返回HTMLUnknownElement.如果名称为
acronym,basefont,big,center,nobr,noembed,noframes,plaintext,rb,rtc,strike,或tt,然后返回HTML元素.如果name是
listing或xmp,则返回HTMLPreElement.否则,如果本说明书中定义了对应于所述本地名称元素类型的接口适当 名称,则返回该接口.
如果其他适用的规范为name定义了适当的接口,则返回它们定义的接口.
如果name是有效的自定义元素名称,则返回HTMLElement.
返回HTMLUnknownElement.
随着<redcar></redcar>你一直走到第7弹.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |