您是否需要关闭HTML中的meta和link标签?


132

我只是在阅读某人的HTML,但他们从未在HTML头部分中关闭meta和link标签。该代码运行良好;关闭这些标签是可选的吗?

我认为,如果未关闭标签,它将格式错误。

Answers:


166

一个标签必须始终由标签关闭符号关闭>(如果我们忽略非XHTML HTML通常适用于某些SGML的规则,但从来没有在浏览器中实现)。

您要问的是元素是否需要由结束标记关闭。答案是非XHTML HTML(包括HTML序列化中的HTML5),metalink元素都不需要或不允许使用结束标记。但是,实际上,如果使用浏览器,浏览器只会忽略它们的显式结束标记,也不会忽略/之前的“货神通” >。HTML5甚至还正式允许/HTML序列化,从而使这种允许成为规则。

在XHTML中,XML规则适用,因此每个元素无一例外都必须具有开始标记和结束标记,但是如果元素内容为空(例如<meta name="foo" content="bar"/>的简称),则两个角色都可以使用相同的标记<meta name="foo" content="bar"></meta>。如果在将XML(XHTML)内容类型的文档提供给符合条件的浏览器时违反了此规定,则根本不会显示您的文档;而是显示一条错误消息。

当使用具有HTML内容类型(Content-Type: text/html)的XHTML服务器时,由于XHTML文档几乎总是在网络上,因此浏览器实际上将应用非XHTML HTML规则。

总结一下:

  • 通常情况下,只要使用<meta ...>/
  • 如果您确实在实际应用XHTML解析的上下文中使用XHTML,请按XML规则播放(并确保您知道它们)
  • 如果老板告诉你写<meta ... />,那就写;它没有用,但不会造成伤害(除非您尝试例如针对HTML 4.01 doctype进行验证)。

3
使用/>会导致Google bot无法识别元机器人标签的问题。奇怪!!!
DevZer0

13
我发现在这种情况下,“货运邪教”一词是不合适的。有些人之所以关闭这些元素,仅​​仅是因为他们坚称XHTML并不流行。
马库斯

6
脚踏警报!在正常实践中,“货邪教”不是用连字号,而是仅在将整个短语用作其他事物的形容词时(例如,“货邪教编程”,“ /在...之前的货神教>”)。只是想我要澄清一下,以免使互联网更加混乱。</pedant_alert>:)
亚伦Wallentine

1
@ DevZer0-您确定斜杠是原因吗?我希望Google在这种事情上能保持灵活性。
西蒙·伊斯特

2
使您的HTML与XHTML规则一致不是不是在/之前加上/的原因吗?
凯尔·德莱尼

28

这取决于文档类型。HTML5不需要结束。XHTML可以。

在HTML5中,所谓的void元素(无法包含内容的元素)不需要关闭,因为它们是自动关闭的。但是,如果关闭它们,它仍然有效。

在此处阅读有关它的更多信息:void-elements


4
HTML5有两个序列化,其中之一(XHTML序列化)使结束标记成为必需。
Jukka K. Korpela 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.