引言
HTML(Hypertext Markup Language)中文名称为"超文本标记语言",它遵循"万维网联盟(W3C)"定义的结构规范,在HTML5之前的版本中,W3C将HTML定义为"标准通用标记语言(SGML,Standard Generalized Markup Language)"的一种应用;而SGML是一种定义标记语言的技术,它通过"文档类型定义(DTD,Document Type Definition)"的形式来指定允许的文档结构,浏览器按照SGML中定义的"DTD规范"来呈现HTML文档的内容。
文章目录
0×1.HTML发展历程
HTML标准版本有:Html2.0、HTML3.2、HTML4.0、HTML4.01、HTML5(它并不是基于SGML或XML定义的,而是类似英文散文规范的形式)。
HTML1并不曾存在,也没有人知道它为什么不存在,也许存在过,在实验室里;HTML的第一个官方版本是由IETF(互联网工程任务组)推出的HTML2.0,后来W3C取代IETF的角色,成为HTML的标准组织,1990年代的后半页,HTML的版本被频繁修改,直到1999年HTML4.01的出现,至此,HTML到达了它诞生以来第一个命运的转折点;
W3C在HTML4.01之后发布的第一个修订版本是XHTML1.0,其中X代表"eXtensible"(扩展),当然也有人将之解读为 "eXtreme"(极端);XHTML1.0是基于HTML4.01的,并没有引入任何新标签或属性,唯一的区别是,HTML语法比较随便,而XHTML则要求XML般的严格语法,这种严格的标准已经惹怒了当时的一部分开发者;XHTML1.0的推出刚好碰上了CSS的崛起,如果说XHTML1.0是XML风格的HTML,那么后来的修订版XHTML1.1则是货真价实的XML;
紧随其后W3C发布了第二个修订版XHTML2,它不向前兼容,甚至不兼容之前的HTML;W3C将它定义成一种全新的语言,对于HTML开发者来说这是一场灾难,忍无可忍的开发者们决定放弃W3C制定的标准,他们投奔了另外一个组织WHATWG,而WHATWG研发了一种新的HTML标准,他们将它命名为HTML 5;
在WHATWG致力于HTML5的同时,W3C继续着他们的XHTML2.0;然而,他们却慢慢的陷入了困境,几个月后,W3C组建了一个新的HTML工作组,他们非常明智的选择了WHATWG的成果作为基础;这一转变带来了一些困惑,W3C同时进行着两套规范,XHTML2和HTML 5(注意,W3C的HTTML 5在5之前有个空格,而WHATWG的HTML5则没有空格),而与此同时WHATWG也在进行着同样的工作;
这一混乱局面到了2009年才开始变得清晰,W3C宣布终止XHTML2的工作,这是一份关于XHTML2迟到的讣告,也正式宣布了HTML5走上历史的舞台,成为当今最主流的HTML标准规范。
0×2.DOCTYPE标签
我们随便在浏览器中打开一个网页,右击页面"显示源代码",在源代码的最顶部,会看到一个DOCTYPE标签,它的目的是告诉浏览器解析器,应该使用什么样的文档类型定义来解析文档。
在HTML4.01中,必须在DOCTYPE声明引用 DTD,因为HTML4.01基于SGML,DTD规定了标记语言的规则,这样浏览器才能正确地呈现内容;HTML5不基于SGML,所以不需要引用 DTD。
现如今,绝大多数的网页查看源代码都会在顶部看到下面这一行标记,这说明页面使用的是HTML5规范:
处于历史原因,介绍一下HTML4.01的三种DOCTYPE声明,随着HTML5的普及,这些声明可能会慢慢被淘汰:
HTML4.01 Strict:该DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets)。
HTML4.01 Transitional:该DTD包含所有HTML 元素和属性,包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets)。
HTML4.01 Frameset:该DTD等同于HTML4.01 Transitional,但允许框架集内容。