HTML历史
HTML的全称是 Hyper Text Markup Language(超文本标记语言),它是互联网上应用最广泛的标记语言。不要把HTML语言和Java、C等编程语言混淆起来(把HTML想得很复杂),HTML只是一种标记语言,简单地说,HTML文件就是普通文本+HTML标记(很多地方也称为HTML标签),而不同的HTML标记能表示不同的效果。
从HTML面世开始,它就显得“很不正规”:1991年年底推出HTML,但最早的HTML并没有任何严格的定义。直到1993年,IETF(Internet Engineering Task Force,互联网工程工作小组)才开始发布HTML规范的草案。在HTML语言的发展历史中,大致经历了如下发展历史:
➢ HTML(第1版):1993年6月由互联网工程工作小组发布的HTML工作草案。
➢ HTML 2.0:1995年11月作为RFC 1866发布。
➢ HTML 3.2:1996年1月14日由W3C组织发布,是HTML文档第一个被广泛使用的标准。
➢ HTML 4.0:1997年12月18日由W3C组织发布,也是W3C推荐标准。
➢ HTML 4.01:1999年12月24日由W3C组织发布,是HTML文档另一个重要的、广泛使用的标准。
➢ XHTML 1.0:发布于2000年1月26日,是W3C组织推荐标准,后来经过修订于2002年8月1日重新发布。
在HTML 3.2之前,HTML的发展极为混乱,各软件厂商经常自行增加HTML标记,而各浏览器厂商为了保持最好的兼容性,总是尽力支持各种HTML标记。在HTML发展历史中,最广为人知的是HTML 3.2和HTML 4.01。
在早期的HTML发展历史中,由于HTML从未执行严格的规范,而且各浏览器对各种错误的HTML极为宽容,这就导致了HTML显得极为混乱。
HTML 4.01和XHTML
XHTML的全称是(eXtensible Hyper Text Markup Language,扩展的超文本标记语言),XHTML和HTML 4.01具有很好的兼容性,而且XHTML是更严格、更纯净的HTML代码。前面已经讲过了,由于HTML已经发展到一种极度混乱的程度,所以W3C组织制订了XHTML,它的目标是逐步取代原有的HTML。简单地说,XHTML就是最新版本的HTML规范。
<html>
<head>
<title>混乱的HTML文档</title>
<body>
<h1>混乱的HTML文档
上面代码中4个粗体字标签都没有正确结束,这显然违背了结构化文档的规则,但使用浏览器来浏览这份文档时,依然可以看到浏览效果——这就是HTML不规范的地方。而XHTML致力于消除这种不规范,XHTML要求HTML文档首先必须是一份XML文档。
XML文档是一种结构化文档,它有如下4条基本规则:
➢ 整个文档有且仅有一个根元素。
➢ 每个元素都由开始标签和结束标签组成(例如<a>
和</a>
就是开始标签和结束标签),除非使用空元素语法(例如<br />
就是空元素语法)。
➢ 元素与元素之间应该合理嵌套。例如<a><b>
疯狂Java讲义</b></a>
,可以很明确地看出<b.../>
元素是<a.../>
元素的子元素,这就是合理嵌套;但<a><b>
疯狂Java讲义</a></b>
这种写法就比较混乱,也就是所谓的不合理嵌套。
➢ 元素的属性必须有属性值,而且属性值应该用引号(单引号和双引号都可以)引起来。
为此,W3C建议使用XML规范来约束HTML文档,将HTML和XML的长处加以结合,从而得到现在和未来都能使用的标记语言:XHTML。
从XHTML到HTML 5
虽然W3C努力为HTML制订规范,但由于绝大部分编写HTML页面的人并没有受过专业训练,他们对HTML规范、XHTML规范也不甚了解,所以他们制作的HTML网页绝大部分都没有遵守HTML规范。大量调查表明,即使在一些比较正规的网站中,也很少有网站能通过验证。例如2008年,一项关于Alexa全球500强网站的调查表明,仅有6.57%的网站能通过HTML规范验证。如果把那些名不见经传的小网站考虑在内,整个互联网上就几乎都是不符合规范的HTML页面。
虽然互联网上绝大部分HTML页面都是不符合规范的,但各种浏览器却可以正常解析、显示这些页面,在这样的局面下,HTML页面的制作者甚至感觉不到遵守HTML规范的意义。于是出现了一种非常尴尬的局面:一方面,W3C组织“声嘶力竭”地呼吁大家应该制作遵守规范的HTML页面;另一方面,HTML页面制作者却根本不太理会这种呼吁。
现有的HTML页面大量存在如下4种不符合规范的内容:
➢ 元素的标签名大小写混杂的情况。比如<p>HTML</P>
,这个<p.../>
元素的开始标签和结束标签采用了大小写不匹配的字符。
➢ 元素没有合理结束的情况。比如只有<p>
标签,没有</p>
结束标签。
➢ 元素中使用了属性,但没有指定属性值的情况。比如<input type="text" disabled>
。
➢ 为元素的属性指定属性值时没有使用引号的情况。比如<input type=text>
。
可能是出于“存在即是合理”的考虑,WHATWG组织开始制订一种“妥协式”的规范:HTML 5。既然互联网上大量存在上面4种不符合规范的内容,而且制作者从来也不打算改进这些页面,因此HTML 5干脆承认它们是符合规范的。换句话说,HTML 5是规范制订者对现实的妥协。
注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。