引言
- DOCTYPE标签存在于html文档头部,我以前没有注意他,因为大多数情况下,我编写的都是html5文档,区区一行
<!DOCTYPE html>
确实没有引起我的重视; - DOCTYPE标签规定了文档类型、文档模式等等,对于浏览器正确解析html文档具有重要作用;
- 本文分析了DOCTYPE标签的作用和常见形式;
文档类型
- XML、HTML、XHTML、HTML5的关系如下:
- SGML(标准通用标记语言)是一个标准,告诉我们怎么去指定文档标记,他是只描述文档标记应该是怎么样的元语言;
- HTML是被用SGML描述的标记语言;
- HTML不够灵活,因此W3C开发了XML,XML用于对信息进行自我描述,XML支持自定义标签;
- XHTML是在HTML和XML之间的一种语言,是为了适应XML而重新改造的HTML;
- XHTML比HTML更加严格;
- HTML5不是基于SGML的,所以不需要引用 DTD;
- HTML5是最新的HTML标准,他的主要目标是提供所有内容而不需要任何的像flash,silverlight等的额外插件,这些内容来自动画,视频,富GUI等;
- DHTML是指Dynamic HTML,动态的HTML,DHTML意味着HTML、CSS和 JavaScript的组合;
- 为什么说XHTML比HTML更加严格:
- 在HTML中标签可以不严格嵌套、有时可省略结束标签、标签的大小写不作区分、属性值有时可以不加引号,这些在XHTML中均不允许;
- 几者的关系可用下图表示:
DOCTYPE标签的作用
- 作用一:告诉浏览器这个文档是HTML、HTML5还是XHTML,即区分文档定义类型(DTD);
- 作用二:告诉浏览器这个文档是过渡的(Transitional,要求非常宽松的DTD)还是严格的(Strict,要求严格的DTD)还是框架的(Frameset,专门针对框架页面设计使用的DTD);
- 需要注意:
- 如果浏览器不能识别一个形式错误的doctype,就会强制进入Quirks模式;
- <!DOCTYPE>声明位于文档中的最前面的位置,处于标签之前;
- <!DOCTYPE>没有结束标签;
- <!DOCTYPE> 声明对大小写不敏感;
DOCTYPE基本语法
- 语法如下:
1 | HTML 顶级元素 可用性 "注册//组织//类型 标签//定义 语言""URL"; |
- 选项说明:
- 顶级元素:指定DTD中声明的顶级元素类型,这与声明的SGML文档类型相对应。
- 可用性:指定正式公开标识符(FPI)是可公开访问的对象还是系统资源。 PUBLIC为默认值,表示可公开访问的对象。 SYSTEM指系统资源,如本地文件或URL。
- 注册:指定组织是否由国际标准化组织(ISO)注册。 + 为默认值,表示组织名称已注册。 - 表示组织名称未注册。
- 组织:指定表明负责由 !DOCTYPE 声明引用的DTD的创建和维护的团体或组织的名称,即 OwnderID。
- 类型:指定公开文本类,即所引用的对象类型。 DTD为默认值。
- 标签:指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。 HTML为默认值。
- 定义:指定文档类型定义。 Frameset为框架集文档。,Strict排除所有W3C专家希望逐步淘汰的代表性属性和元素,因为样式表已经很完善了,Transitional包含除frameSet元素的全部内容。
- 语言:指定公开文本语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为 ISO 639 语言代码(大写两个字母)。 EN为默认值,表示英语。
- URL:指定所引用对象的位置。
不同模式的例子
- 过渡的(Transitional):要求非常宽松的DTD(一般推荐使用这种)
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
- 严格的(Strict):要求严格的DTD
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
- 框架的(Frameset):专门针对框架页面设计使用的DTD
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> |
常用的DOCTYPE声明
- HTML5
1 | <!DOCTYPE html> |
- HTML 4.01 Strict
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
- HTML 4.01 Transitional
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
- HTML 4.01 Frameset
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" |
- XHTML 1.0 Strict
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
- XHTML 1.0 Transitional
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " |
- XHTML 1.0 Frameset
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" |
- XHTML 1.1
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |