Doctype 的作用
根据W3C组织的标准,推荐在Web文档中使用Doctype声明。当创作的文档是HTML或XHTML时,添加Doctype声明很重要。这样可以确保不同浏览器以相同的方式解析文档,以保证展示出来的效果一致。doctype 声明不属于 HTML 标签;tag; 它是一条指令,告诉浏览器编写页面所用的标记的版本。
由于历史原因,当浏览器解析以Doctype声明开头的HTML文档时,浏览器的行为和表现更加可预测并且更加统一。
在所有 HTML 文档中规定 doctype 是非常重要的,这样浏览器就能了解预期的文档类型。
为什么要加上Doctype声明?
最初,当HTML被基于SGML定义为一门语言时,Doctype声明被应用于HTML,以及后来的XML上。
由于该声明的存在通常是文档作者遵循标准实践的信号,因此在HTML5中使用该声明来区分符合标准的解析模式和所谓的怪异解析模式。
无论您是要通过SGML还是XML解析器解析HTML文件,还是只是确保在HTML5处理器中以相同的方式解析文档,doctype都是高质量HTML文档的关键组件。
什么是SGML?
SGML是标准能用标记言(Standard Generalized Markup Language)的简称。 SGML(标准通用标记语言)是一个指定文档标记语言或标记集的标准。这样的规范本身就是文档类型定义(DTD)。SGML本身不是文档语言,而是如何指定文档语言的描述。它是元数据。
SGML基于这样的思想:文档具有结构和其他语义元素,可以在不参考如何显示这些元素的情况下进行描述。这种文档的实际显示可能会有所不同,具体取决于输出媒体和样式首选项。基于SGML的文档的一些优点是:
它们可以通过考虑文档结构而不是外观特征(可能随时间变化)来创建。 它们将更具可移植性,因为SGML编译器可以通过引用其文档类型定义(DTD)来解释任何文档。 最初用于打印介质的文档可以容易地重新适用于其他介质,例如计算机显示屏。 此Web浏览器使用的语言,超文本标记语言(HTML),是基于SGML的语言的示例。HTML有一个文档类型定义(阅读HTML规范有效地阅读了文档类型定义的扩展版本)。在当今的分布式网络环境中,许多文档都使用可扩展标记语言(XML)进行描述,XML是一种使用SGML原则的数据描述语言(文档可以被视为数据集合)。
SGML基于IBM开发的早期通用标记语言,包括通用标记语言(GML)和ISIL。
这个说的比较拗口,大概意思就是,这是一个标记语言的标准,HTML4.01之前是基于这个标准来定义的一门语言,所以要加上DTD的引用。
如何添加Doctype声明
在HTML5中,使用的最简单,最可靠的doctype声明方法是在web文档中的第一行,定义的声明如下:
1
1
HTML 4.01下的声明方式
严格方式
1
1
过渡模式
1
1
框架集
1
1
为什么HTML 5 只需要写简短的一句?
在HTML 4.01中,Doctype 需要对 DTD 进行引用,因为 HTML 4.01 基于 SGML。前面说到了, HTML 5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为,让浏览器按照它们应该的方式来运行。