附录A HTML5与相关标准
HTML5实战
本附录主要内容
- HTML5规范的开发
- 常见的一些已获W3C承认的HTML5规范(非草案)
- 与HTML5相关的一些常见规范
像HTML5、CSS3、Node.js这些流行词,你经常能在一些场合遇到。有很多人用HTML5来描述各种新兴涌现的Web技术,HTML5俨然已成为一种“百宝箱”般的存在。比如,本书的一位作者就曾遇到一位市场营销人员,他这么说道:“我能利用HTML5创建一个为SEO优化过的视频游戏。”这些人至少也应该了解一下HTML5规范是什么啊,这样才不会出丑嘛!所以,在附录A我们将主要介绍HTML5的官方定义,以及不属于HTML5的一些技术。
A.1 HTML5的起源
或许出人意料的是,万维网联盟(Worldwide Web Consortium,W3C)起初并不提倡HTML5技术。W3C认为,在HTML4之后HTML就该消亡了,于是他们转而去从事XHTML2规范的制定与推广,力图使这种基于XML语法格式的Web标记语言得到发扬光大。如果XHTML1被认为是一种语法严格的语言,那么它的第二版简直就可以用“苛刻”一词来形容了。因此,W3C的很多成员都感觉需要更换解决方案了,WHATW(Web Hypertext Application Technology Working Group,Web超文本技术工作组)随后组建起来,开始研究HTML5。
HTML5最初只有两个规范:Web Apps1.0与Web Forms 2.0,然后它们被融合成一个单一规范:HTML5。不久之后,W3C意识到HTML的优点,开始致力开发HTML第5个版本的规范(应该明确的是,这个规范跟WHATWG所推出的HTML5并不完全一致),他们在WHATWG的工作成果的基础上开始制定新标准。在一段时期内,这种情况加剧了标准的复杂性。WHATWG在搞HTML5,而W3C则在搞“HTML的第5个版本”,但同时也在继续制定XHTML2标准。糊涂了吧?我们那时就是这种感觉。
从那时起,XHTML2实际上就已经死掉了,无论是WHATWG还是W3C,大家都在往HTML5这条路上发展。虽然双方的成果都由同一个编辑所监督,但他们各自都有一套独立的标准。这种情况的出现,是权益博弈的结果。基于一些非常复杂的理由,不同的利益集团会选择不同的阵营,从而产生那种可悲可笑的状况。
A.1.1 WHATWG与W3C
WHATWG的目标是按照所有利益集团的反馈意见来持续更新“HTML活跃标准”,使之成为一种能够稍微领先于当前实现的前沿性标准及规范。WHATWG则放弃了使用版本号来标识标准的做法,转而采用不断演进的文档来记录与发布标准。这份标准旨在能够稍微领先于浏览器厂商所实现的功能,同时通过论坛的形式让所有人都能参与决策,以便确定最终实现中出现的新特性及其相关文档的细节。
W3C则继续沿用传统的版本号迭代的做法,HTML5后面肯定就是HTML6、HTML7,等等——它们都是参考了一些WHATWG的快照文档的内容。总之,就目前而言,W3C把WHATWG现存的单一规范分割成了8种不同的规范,从而使得各种特性都能分别发展,并不阻碍标准的发布。有关WHATWG各种独立规范的列表,可以参看WHATWG常见问题页面:http://mng.bz/dWRb。
这两大组织另一个关键区别在于制定决策的方式。在WHATWG中,编辑对HTML5规范的有绝对的决策权。W3C则采用由HTML工作组对议题逐步升级的方式来进行决策。
除了HTML之外,W3C还要制定大量的规范,其目标之一即是力图使所有的规范都能彼此兼容。W3C多年来都一直在致力于发展基于XML的技术,而WHATWG则反对使用纯的XML方案,这一点形成了两大组织分歧的根源。但是除了一些热点问题的争论外,这两大组织的规范间并未有过于明显的冲突。
为了帮助读者直观地了解两大组织的关键区别,我们特别总结了表A-1。
当然,仅用这张简单的表格是无法涵盖成千上万开发者的真实情况的。尤其要注意的是,有许多人还同时参与到这两个组织的工作中。本节的作用只不过想让你了解一下这两大组织的背景,当你想要了解哪一种浏览器能正确地实现某种功能时,在WHATWG邮件列表与他人进行讨论,或是参与到W3C对于某些规范的具体细节所进行的bug追踪时,就不至于出现一些沟通问题。
A.1.2 那么……HTML5到底是什么东西
在我们看来,如果一项技术属于WHATWG的Living Standard标准,或是源于这一标准的W3C规范之一,那么它就应算是HTML5的官方技术。但很多技术,虽然和HTML5沾边,却并不是HTML5的官方定义,比如CSS3、Geolocation、Storage API等。下面一节将概述HTML5的官方技术,随后的一节将介绍不属于HTML5官方定义的技术。
是不是HTML5官方技术有那么重要吗?
当然没有那么重要啦!当我们在现代Web平台上开发Web应用时,应该选择那些能够符合你的任务要求的技术,而且浏览器还得支持它们才行,而不要光看它们具体出现在哪条规范上。即使你在一些社交网络上进行热烈的争论,声称自己开发的HTML5应用的关键之处就在于使用了Geolocation,你也不会被人大加责难。如你所见,我们在写作本书时,也对HTML5的定义进行了延伸,也使用了一些非官方的技术。