每个HTML5文档的第一行都必须是一个特定的文档类型声明。这个文档类型声明用于告知所有查看文档的人,后面都是HTML5内容:

<!DOCTYPE html>

HTML5的文档类型声明给人的第一印象就是极其简单。特别是与冗长的XHTML 1.0严格型的文档类型声明相比,这一点更明显:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

面对如此复杂的XHTML文档类型声明,就连专业的Web开发人员也不得不采用复制粘贴的方法。相比之下,HTML5的文档类型声明简约至上,手工输入也不麻烦。

另外,HTML5的文档声明还有一点值得注意,那就是它不包含官方规范的版本号(即HTML5中的5)。事实上,这个声明仅仅表明当前页面是HTML页面。这与HTML5作为一门活着的语言(见1.1.4节)的远见是分不开的。换句话说,只要有新功能添加到HTML语言中,你在页面中就可以使用它们,而不必为此修改文档类型声明。

由此,不少读者可能都会提出一个问题:既然HTML5是一门活语言,那为什么还要求网页中有这个所谓的文档类型声明呢?

要求保留文档类型声明,主要是由于历史原因。如果没有文档类型声明,那大多数浏览器(包括Internet Explorer和Firefox)将转换到一种混杂模式(quirk mode)1。在这种模式下,浏览器会尝试根据有点不那么正常的规则呈现网页(那些规则是在浏览器的老版本中使用的)。而问题是,不同浏览器的混杂模式也不一样,因此为一种浏览器设计的页面到了另一个浏览器中,不是字体大小不一样,就是布局上有瑕疵,或者出现其他不一致的问题。

注1:IE5.5引入了文档模式(document mode)的概念,这个概念是通过切换文档类型声明实现的。最初的两种文档模式是:混杂模式和标准模式。混杂模式会让IE的行为与(包含非标准特性的)IE5相同,而标准模式则让IE的行为更接近标准行为。虽然这两种模式主要影响CSS内容的呈现,但在某些情况下也会影响到JavaScript的解释执行。摘自《JavaScript高级程序设计(第3版)》P16 ~ P17,[美]Nicholas C. Zakas著,李松峰、曹力译,人民邮电出版社2012年版。(译者注)

而在添加了文档类型声明后,浏览器就知道你想要使用更严格的标准模式(standard mode),在这种模式下,所有现代浏览器都会以一致的格式和布局来显示网页。浏览器不关心你使用的是哪种文档类型(个别情况下还有些例外),只要它检查到你有某种文档类型声明就好。HTML5的文档类型声明是最短的有效文档类型声明,因此它能触发标准模式。

提示 HTML5的文档类型声明可以触发所有具备标准模式的浏览器的标准模式,包括那些对HTML5一无所知的浏览器。为此,从现在开始,你可以在任何网页中都使用HTML5文档类型声明,即便使用很少得到支持的HTML5功能也没问题。

虽然文档类型声明主要的目的是告诉浏览器去做什么,但其他代理也可以检测该声明,比如,HTML5验证器、搜索引擎、设计工具,还有人(在想知道你当初在页面中想写什么样的标记时)。