HTML5 的不寻常故事
在本节课中,让我们揭开HTML5不平凡的故事!
HTML:简要历史
HTML 是 超文本标记语言(Hypertext Markup Language)的缩写。尽管它最初作为在 CERN(欧洲核子研究中心)共享科研论文的文档描述语言而诞生,但最终发展成为 网页渲染的基础技术。
自 1980 年问世以来,HTML 经历了多次演变。到 1997 年底,它达到了 HTML 4.0 的版本,并被正式发布为 W3C(万维网联盟)推荐标准。
从 HTML 到 XHTML
即使 W3C 本身也不认为 HTML 能够延续到下一个世纪,因此他们没有继续推进 HTML 的发展,而是选择停止对其的维护。
W3C 把希望寄托于 HTML 的升级版——XHTML(可扩展超文本标记语言),它基于 XML 构建。这一决策的主要原因是为了引入比 HTML 更严格的语法规范。例如,在 HTML 中,以下代码虽然语法不规范,但仍能被浏览器正确识别并显示:
1<p>Hello <b>HTML!</p></b>
浏览器会接受这种写法,并准确呈现作者想要的效果。然而,这种写法违反了正确的嵌套规则。正确的、符合规范的写法应如下所示(注意 p 和 b 标签的顺序与上例相反):
1<p>Hello <b>HTML!</b></p>
这种写法遵循了 XHTML 所要求的严格 XML 语法规范。
试想一下,一个符合 XML 规范的标记语言如 XHTML 可能带来的优势:
- XML 可以轻松解析和处理,无需应对 HTML 中常见的怪异行为(如“Hello HTML!”示例中的嵌套问题);
- 易于与 XML 工具集成;
- 具备良好的跨设备兼容性,包括移动设备等。
起初,XHTML 看起来确实是正确的方向,越来越多的专业开发者和网页设计师开始采纳它作为标准。浏览器也能够正确解析并按标准渲染 XHTML 页面。
然而,浏览器的行为却超越了规范:它们并未强制执行严格规则,而是自动修正错误的标记结构,比如在上述第一个示例中自动交换 </b> 与 </p> 的顺序,从而避免报错。
这种“智能容错”行为实际上 摧毁了 XHTML 标准,因为浏览器在处理传统 HTML 页面时,也默认将其当作 XHTML 来解析。W3C 原以为通过在 XHTML 2 中加强规则、要求浏览器拒绝无效页面,就能解决标准化问题。
结果证明,他们的判断是错误的。不仅是因为标准更新过于微小且逻辑上不够合理,更因为其推进速度极其缓慢,导致开发者逐渐失去兴趣。五年后,到 2004 年,XHTML 2 似乎已陷入 死胡同。
## HTML5 的崛起
就在同一年,Mozilla 基金会和 Opera 软件(Firefox 和 Opera 浏览器的开发商)的一群热情人士尝试推动将 XHTML 转变为一种更具开发导向功能的新标准。
他们的目标是将原本用于文档描述的标记语言,转变为构建 Web 应用的强大工具。然而,该提案在 W3C 的投票中未能通过。
随后,他们联合 苹果公司,在 W3C 内部成立了 Web 超文本应用技术工作组(WHATWG)。该组织的核心目标是面向开发者,扩展现有 HTML 标准,同时保持向后兼容性。
最初,他们致力于开发一些补充规范,如 Web 应用 1.0 和 Web 表单 2.0。
到了 2007 年,W3C 间接承认了自身失败:解散了 XHTML2 项目,并开始正式制定基于 WHATWG 工作成果的新标准——HTML5。
No configuration found for ID: 6ca033b5053bac3d8509d95b39e66d7f75bd590149269ff7a5ea3143e7e3e9ca
如今,W3C 负责发布官方的 HTML5 标准,但 WHATWG 并未停止对 HTML 新特性的构想。他们将 HTML 视为一个 持续演进的标准(可访问 http://developers.whatwg.org 了解详情),并将标记语言本身看作一种 活的语言。
根据这一愿景,HTML 页面不再有版本号,过去编写的 HTML 页面永远不会过时。随着技术的发展,HTML 将不断引入新元素、支持新功能。是否使用某项新特性,由浏览器厂商和开发者自行决定。
尽管这种“动态演进”的理念听起来有些奇特,但请想象一下:当新功能不断加入语言时,开发者面对的将是一个不断变化的目标。这其实与今天各浏览器对 HTML 功能支持不一致的现状并无本质区别。
那么,这种方式真的可行吗?时间会给出答案。 :)