W3C HTML5标准阅读笔记 – 引论

标准原文:http://www.w3.org/TR/html5/introduction.html

HTML5标准制作的背景

HTML (Hypertext Markup Language)的最初设计对象是“科学文档”,但随着时代的变化,这一标记语言承接了越来越多的功用。对于Web而言,尚未被HTML标准所覆盖的领域主要集中在“Web应用”上;因此HTML5标准所致力解决的即是厘清“web应用”领域HTML文档的规则与行为,同时修复一些积累下来的问题。

HTML5标准发布的历史

HTML5标准发布的历史时间线为:

  • 1997年,HTML4发布 (2年后,HTML4的改进版HTML4.01发布)
  • 1998年,浏览器厂商制作发布DOM Level1 (5年后,DOM Level2发布,之后DOM Level3无疾而终)
  • 1998年,W3C认为Web未来的发展方向应当是XHTML,而HTML则应当停止发展并最终弃用
  • 2000年,W3C发布XHTML1.0,并开始进行XHTML2标准的制作
  • 2003年,增强版Web表单XForms概念提出,并由浏览器厂商成功制作原型
  • 2004年,Mozilla和Opera提出应当重启HTML标准的改进工作;由于此提议与之前所定的Web发展方向(XHTML)相冲突,提议被W3C否决。之后,Apple、Mozilla和Opera成立新的Web标准制定组织:WHATWG,致力于新的HTML标准的制定工作
  • 2006年,W3C参与制定新的HTML5标准,之后新的HTML5标准制定的主编辑为Ian Hickson
  • 2011年,因目标不同,W3C与WHATWG出现分裂。W3C致力于发布一个“定稿”的HTML5标准,而WHATWG则倾向于让HTML标准不断发展,仅发布HTML的当前实时版本(Living Standard)。自此,两大组织分道扬镳,但互相之间保持交流
  • 2014年10月28日,W3C的HTML5标准定稿

可以看到,由于W3C在1998年的决策,HTML标准走了一个很大的弯路(XHTML)。直至2006年W3C参与制定新的HTML5标准,这一弯路走了8年。因为Web的快速发展,W3C心目中理想的标准XHTML2.0过于学院派,无法跟上外部世界的节奏,因此最终被淘汰。

相比W3C,WHATWG的风格更为务实。在制定HTML5标准的过程中,WHATWG遵循以下3条准则:

  1. 技术需要做到向后兼容
  2. 标准与具体的实现需要维持一致,哪怕为了已有的实现方案而修改标准也在所不惜
  3. 标准需要足够的详细与清晰,从而使得浏览器厂商无需为了兼容性问题而逆向工程其它厂商的产品

WHATWG的HTML实时版本地址为:https://html.spec.whatwg.org/

HTML5标准设计摘要

在制定HTML5标准的过程中,标准的制定者们遵循了以下三条设计理念:

  1. 单线程,页面脚本的执行顺序为串行。如果引入多线程,就会大量增加页面脚本编写的复杂度,进而影响页面程序的质量。因此在HTML与DOM API的设计中,任何脚本都无法获知其它脚本的执行情况。
  2. 与其它的标准保持兼容。
  3. 提供语义扩展接口。在HTML5中,语义扩展可以通过以下多种方式来实现:
    • class。通过向普通的HTML元素添加class属性值,来增添HTML元素的语义。
    • data-*属性。data-*属性是一个特殊属性,标准保证浏览器将不会赋予该属性任何行为,因此开发者可以安全地在此属性中存放数据。
    • meta标签。开发者可以通过使用<meta name="" content="">来存放属于某张页面的元数据。
    • link标签。开发者可以通过使用<link rel="" href="">来定义文档所依赖的外部资源。
    • script标签。开发者可以通过使用<script type="">并使用自定义的type值,从而在这个script标签中存放任意数据。因为该”脚本”类型为自定义,因此浏览器不会做任何的语法解析,也就不会有任何报错。
    • embed标签。可以通过使用embed标签来引入flash、applet等插件。
    • 通过JavaScript的原型继承来实现API的扩展,这在各种JavaScript类库中非常常见。

HTML与XHTML

如果文档的MIME Type是text/html,则浏览器会将其作为HTML文档进行处理;如果文档的MIME Type是application/xhtml+xml,则浏览器会将其作为XHTML文档进行处理。该MIME Type可以通过查看HTTP请求的Response头中的Content-Type字段来获知,如: mime type in response header 与HTML文档相比,XHTML对文档的语法要求更为严格。XHTML会将文档作为XML文件来对待,因此哪怕再小的语法错误都会导致文档无法完全渲染。在经过一番搜索之后,我无法在网络上找到某个网页,其Content-Type是application/xhtml+xml的。个人认为这可能是由于XHTML的容错为0,因此在实际产品中实用性较低所导致的。不过对于浏览器而言,在HTTP请求头的Accept字段中,可以找到text/html和application/xhtml+xml;这意味着浏览器本身是同时支持这两种文档格式的。 mime type support in browser