为什么我们要使用< html >标签,即使我的网站在没有< html >标签的情况下也可以完美运行?

9

尽管网站在没有这些<html></html>标签的情况下运行得很好,但我需要知道从网页开头开始使用<html>标签的用途。

我知道必须使用doctype,但为什么需要这个<html>标签呢?


因为它是一个HTML文档,难道不是吗? - BoltClock
2
你有没有在提问之前尝试使用谷歌搜索? - Artem Barger
顺便说一句,doctype声明根本不是必需的。它只有在你想以符合标准的方式使用现代HTML功能时才需要。虽然这样做肯定是推荐的。 - Daniel Pryden
@Daniel - 这取决于你如何定义“必需”。自从HTML有了像RFC一样正式定义的规范以来,Doctype就已经是必需的了。如果你的意思是“浏览器可以恢复什么”,而不是“语言需要什么”,那么你是有道理的,但是编写标准比尝试反向工程世界上所有的浏览器要容易得多。 - Quentin
4个回答

20

<html>标签不是必需的。

来自DTD:

<!ELEMENT HTML O O (%html.content;)    -- document root element -->

两个O表示起始标签和结束标签(分别)是可选的。

相反,元素是必需的(但语言被设计为浏览器可以暗示它)。

由于DOM由节点树组成,您必须拥有一个节点(根元素)以使其余所有内容挂靠,而这个元素就是html元素。

这也是一个非常有用的地方,可以在其中放置一个适用于整个文档的lang属性。


5
这个说法对于HTML是正确的,但对于XHTML则不然,因为任何有效的XML文档都需要一个根元素。 - Daniel Pryden
2
HTML仍需要根元素,标签只是可选的。但XML没有可选标签。(问题没有提到XHTML,所以我没有提及它) - Quentin
我不知道“<html>标签不是必需的”这一点,但如果页面没有<html>,那么该页面是否能通过W3C验证呢? - Jitendra Vyas
当然。如果验证器不理解DTD中的“O”,那么它将是一个相当糟糕的验证器。 - Quentin

5

0

这是一个可选标签,但有些浏览器在浏览页面时会添加它。


-1

通常它可以工作, 但当我们需要提供一些参数,如HTML版本 任何加密,那么这些都是通过标签跟随的


3
我们能用来指定HTML版本的最接近的方法就是文档类型声明,它位于任何标签之前的文档顶部。在Web上,加密处理是在传输层进行的,而不是文档层,因此它不会受到HTML起始标签(或缺少起始标签)的影响,HTML起始标签上的任何属性也不用于加密。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接