HTML5是HTML最新的修订版本,2014年10月由万维网联盟 (W3C)完成标准制定。 目标是取代1999年所制定的HTML 4.01和XHTML 1.0标准,以期能在网际网路应用迅速发展的时候,使网路标准达到符合当代的网路需求。 广义论及HTML5时,实际指的是包括HTML、 CSS和JavaScript在内的一套技术组合。 它希望能够减少网页浏览器对于需要外挂程式的丰富性网路应用服务 (Plug-in-Based Rich Internet Application, RIA ),例如: Adobe Flash 、 Microsoft Silverlight与Oracle JavaFX的需求,并且提供更多能有效加强网路应用的标准集。
Web上的所有技术的规格都由万维网联盟(W3C)负责管理。作为一名前端工程师的您,可能访问过该联盟的网站[w3.org](https://www.w3.org/TR/html5/)来寻找HTML5的某个问题的答案。或者在google搜索HTML specs找到规范的文档途径。
就这样,您接触到了规格,但几乎立刻被吓得落荒而逃。您一定会得,“什么嘛,这完全不是给人读的。”实际上,它是给人读的,前提是您预先了解一些关键信息。
"圣经写出来不是为了给人读,而是为了给人解的。 "
如果您想要寻找某个问题的答案,实际上就是在寻找的是一本用户手册,或一篇用户指南;换言之,您想要了解的是该技术的用法。然而,这却并不符合W3C规格的创作意图。所谓“规格”,它意在告知负责实现该技术的程序员,有哪些特性是必须提供的,以及它们应该如何实现。
维修手册在语言风格上注重精确性,这一点和语调轻松、行文随意的谈话作品相当不同。同样地,W3C规格的语言风格也一丝不苟。以下是一些您在阅读规格时会常常遇到的字词。
规范性
如果您看到“本节是规范性的(normative)”,则指出该节的内容会指定实现者应该遵循的细节。而提示性(informative)章节则不然,它们通常是一些示例和解释。
用户代理
这个有点儿故弄玄虚的术语,意思其实是指这样的程序:用户需要凭借它才能和某项技术打上交道。对于HTML而言,它的用户代理就是浏览器。对于可缩放矢量图形而言,它的用户代理可能是一个查看器,如[Batik](http://xml.apache.org/batik/);又或是一个插件,如[Adobe SVG Viewer](http://www.adobe.com/svg/)。
RFC
Request For Comment的缩写,意思是该文档代表某个互联网标准(草案)。
助动词
如果某个规格中写道,它遵循[RFC2119](http://www.ietf.org/rfc/rfc2119.txt) ,那么接下来文中出现的特定助动词就会带有正式的对应含义。 必须(must)的意义是:某定义是绝对要求的; 绝不(must not)的意义是:某定义是绝对禁止的; 应该(should)的意义是:某个特性可以实现也可以不实现,但如果不实现的话,最好有个很好的理由; 不应该(should not)的意义是:如果确实需要在实现里包括某个特性,则最好有个很好的理由。
亲爱的Martha阿姨:谢谢您那本讲大象的书。它告诉我关于大象的知识,比我想知道的还要多。
一个孩子的感谢信
如果您发现自己在读的文字没有明显的标记,只有大量的冗词,读起来既像法律术语,又像是计算机科学讲座,或两者兼似的话,也许仅仅粗粗看一眼就够了。
另一方面,有时您却应该放慢阅读速度。当您看到一张示意图时,请看看它的题注和标注。这些通常都会指向重要信息。当您看到一节中包含有一个或数个示例时,请放慢速度,仔细阅读。
BNF是Backus Naur Form或Backus Normal Form的缩写。它是一种用来表示计算机语言语法的紧凑形式,它实际上无处不在。不同的规格使用不同风格的BNF,但它们的共同之处是都把大段的自然语言描述变换成了符号形式。下面是一个说明了三明治成分的例子:
三明治由以下成分构成:一块面包下切片,还有芥茉或蛋黄酱;生菜可放可不放;西红柿切片可放可不放;二至四块红肠、腊肠或火腿以任意方式组合的切片;一块或多块芝士切片;还有一块面包上切片。
其变换形式为:
三明治 ::= 面包下切片 [ 芥茉 | 蛋黄酱 ] 生菜? 西红柿? [红肠 | 腊肠 | 火腿 ] {2,4} 芝士+ 面包上切片
定义的各成分按顺序列出,以空格分隔。各项目以方括号分组,组内选择以竖线分隔。
如果项目后面跟着一个问号,意思是“一个或没有”;如果后面跟着一个加号,意思是“一个或多个”;如果后面跟着一个星号,意思是“零个或多个”;如果后面跟着一个里面有数字的花括号,数字就代表着项目允许出现次数的上下限。
小括号,或更多的方括号,用来给更复杂的定义中的项目分组。有时候,也会用尖括号括起某项目表示这是一个通用项目(如“颜色”),或用引号括起某项目表示这是一个守恒项目。
更多的阅读细则待以后做更详细的归纳总结:
小结:
1. 建立明确的意识:规格是写给实现者,而非最终用户看的;
2. 许多规格都包含一个专门章节,以说明其组织方式,以及应该如何阅读;
3. 熟知规格专用词汇;
4. 务请记住,您不必阅读逐字阅读规格。学会跳读,集中阅读有意义的部分;
5. 跳过名字空间相关讨论章节;
6. 学习阅读BNF,很多地方都在使用它;
7. 学会阅读DTD,并从中找到语法问题的答案;
8. 如果某项技术涉及可编程脚本,该信息就包含在绑定中。
只要耐心有加、坚持不懈,您一定会为从W3C规格中获取的海量信息而感到惊喜。