日期:2014-02-02 浏览次数:20819 次
多数人使用 HTML 4 和 XHTML 1 编写网页。绝对较少的 HTML 狂热者了解语义 HTML 的概念、验证 HTML 结构和改进文档的可访问性。高质量的 HTML 文档是反复权衡、设计优选和讨论酝酿的结果。虽然遭到诸多批评,还没有任何言语的普及功用与 HTML 比肩。多数用户满足于标准的现状,仿佛生来就该如此一样。
但是和其他很多标准一样,HTML 也有后继者。即便如今,专家仍然在考虑 HTML 的下一版本,处理当前版本中已知的所有问题。和任何人多的地方一样,这些专家也对此项任务的未来方向持有不同意见。
关于新 HTML 版本的第一个提议来自 W3C 组织的一个任务组。这个任务组想法围绕着 XHTML 2— 这个标准延续了原来进一步净化 XHTML、回归第一版 HTML 设计理念的开发方向。
W3C 之外的一些重要的 HTML 专家 — 浏览器厂商、Web 开发人员、作者和其他有关人员 — 不同意 XHTML 2 的方向。2004 年,他们成立了一个独立的任务组,为新的 HTML 版本提出了一种新的设计方向。在 WHATWG(Web 超文本使用程序技术任务组,Web Hypertext Application Technology Working Group)的名义下,他们推出了 HTML 5 和 Web Forms 2。
数年之后,通过任务草案清楚地描述了 HTML 的另一种发展方向。2007 年 4 月,W3C 针对能否接纳 HTML 5 进入标准审核程序的提议进行了投票,(还)没有承认它是正式标准。多数人赞同。于是出现了一种有意思的情形:W3C 同时研讨两种互相竞争的 HTML 和 XHTML 后继技术。从理论上说,两者都有充分的理由。从实践上说,让所有的主流浏览器支持这两种标准还要克服很多妨碍。
这就是导致目前这种情况的基本理想。更有意义的是讨论两种提议之间的真正分歧。本文概括引见了两种提议的基本要点,然后剖析两者的设计理念。
CSS:级联款式表
HTML:超文本标记言语
W3C:万维网联盟
XHTML:可扩展超文本标记言语
理解 XHTML 2 背后隐藏的设计理念需求了解一点历史。20 世纪 90 年代初,第一个 HTML 版本是基于标准通用标记言语(SGML)的。次要的区别在于超链接特性 — 万维网的关键基础和成功要素。和 SGML 一样,HTML 允许作者描述文档的结构,把头部和段落、有序列表、无序列表分开。在屏幕上的显示结果和浏览器有关。
随着 Web 日渐普及,HTML 用户要求控制页面的观感。浏览器厂商在 HTML 2 和 3 中推出了新的特性。网页变得难以理解,复杂的嵌套表结构成为控制页面规划的次要手段。文档的其余部分则充斥着 font 标记和 color 声明。原来的文档结构曾经难以理清。
HTML 4 的出现就是为了结束这种混乱,它将表示逻辑推给了 CSS,为高级的内容定位引入了层(DIV)。和 HTML 3 相比这意味着代码编写模式上的变化。为了简化迁移的过程,通过 HTML 4 的 Transitional 版本来支持旧的 HTML 3 结构。适用于高级用户的 Strict 版本则要求将内容和表示彻底分开。
第一个 HTML 4 网站把 DIV 当作新的圣杯一样使用,页面中几乎每个需求略加修饰的元素都用上,包括(但不限于)头部。HTML style 属性是常见的描述表示细节的地方。最终从网页中消灭了众多成灾的表格。但内容和表示逻辑仍然混在一同。必不可少的 CSS 文件只要寥寥数行。
最近,一些知名的 Web 开发人员为 HTML 4 款式表提出了一种更巧妙的办法。在现代浏览器中,CSS 属性并没有局限于 DIV 元素。只需情愿可以为任何 HTML 元素指定款式。很多 weblog 开始谈论语义 HTML。没有完全禁止 DIV 元素,但是网页编写者开始使用最适合描述其内容的 HTML 元素。比方说,多数网站的导航菜单最好用无序列表来描述。再比如,不对段落元素使用 bigHeader 这样的类名,而改为 H1 元素,然后用 CSS 依据要求修正表示方式。
同时,W3C 提出 XHTML 1 作为符合结构良好而无效的 HTML 4 的 XML 版本。对于 XML 用户来说,这样做简化了将 XML 内容转化成网页并用已有验证程序检查转换结果的任务。XHTML 1.1 尝试将不同的问题隔离到不同的模块中。模块化方法便于针对不同的需求重用标准的不同部分,也有利于用新的功用扩展标准。
和 HTML 4 相比,XHTML 1.1 的用户甚至更多,把内容和表示分离开。但是和过去一样,一些实际问题只能使用 CSS 中技巧来处理。比如,无序列表表示的菜单结构通常包括漂亮的图片。但是,图像不大容易通过文本-语音设备读给有视觉妨碍的人听。而且 Lynx 这样的文本浏览器也不能显示图像。一个复杂的 CSS 技巧可以在浏览器中隐藏文本显示图像。但是如果不同页面上的菜单不同,就很难用 CSS 指定这部分内容了。
XHTML 2 背后最重要的设计理念是进一步分离内容和表示,改进 HTML 4 和 XHTML 1 残留的瑕疵。比如,为无序列表中的每项指定图像的原生支持。原来的 IMG SRC 标记换成了可用于任何元素的可选属性 SRC。修正后的 CSS 完全脱离了内容,不支持图像的设备很容易转而表示文本。
但 CSS 不是 Web 开发人员的独一挑战。大量的时间用于服务器和 HTML 表单的交互以及存在大量 JavaScript™ 代码。表单仅限于一维的键值对。开发 JavaScript 代码任务量很大,但是在文本-语音转换设备这样的接口上毫无用途。
基于模块化的方法,XHTML 2 用 XForms 模块替换了 HTML Forms,使用适当的使用程序模型添加了对常见问题的支持。XForms 不需求一行脚本就能指定交互逻辑、验证规则和计算方法。此外,这种技术采用了丰富的 XML 结构而不是键值对,允许出现嵌套的子表单和反复的元素。除了提供一个强大的引擎外,文本-语音设备更适合改变使用程序的丰富性。
除了 XForms,还有其他一些 XHTML 有关的问题抽取为独立的规范满足其他需求 — 比如 XML Events、XFrames 和 Ruby(亚洲言语)。
随着表示的分离,编程也从标准中分离出来。onClick 之类的交互属性被 XML Events 模块代替。由于 XML Events 规范本身就是为此而设计的,它提供了一组更强大的工具来处理用户接口。
对于 XHTML 2 的创新,总结而言其基本理念就是分解不同的问题。问题不再是 HTML 的次要特性,而成为新规范的次要目的。因此,新规范最适合优化面临的问题。不过,区别对待不同的问题是出于理念而不是实践的需求。熟悉使用这套工具的聪明的开发人员可以得到需求的结果。但是当前 HTML 版本的普通用户能否创建高质量的 XHTML 文档并不好说。
XHTML 2 的目标很可能不是普通 HTML 用户。但是在好的开发人员手中,可以作为加强可访问性的不错的方法。
WHATWG 在设计 HTML 5 的时候采用了一种更符合实际的方法。没有考虑问题分解之类的笼统理念,这个任务组从当前主流浏览器的行为出发制定文档,和 W3C 规范完全不同。在上述分析的基础上,这个任务组调查了 HTML 的实际运用。
依据这些信息,任务组提出了旨在简化普通 Web 开发人员任务的方案。虽然 HTML 5 声称源于上一 HTML 版本,但其次要目标不是纯粹性。比如,模块化文档的次要目标是方便用优化的 Web 使用程序替换。
基于此目的的模块化言语大大简化了 Web 使用程序的开发。比如,HTML 5 支持数据表格、菜单和工具栏这类交互组件。使用默认行为的描述性 HTML 元素可以避免用大量代码模仿通用 DIV 的行为。
HTML 5 规范不限于 HTML 元素和属性。它定义了编辑文档和拖放式交互这类公用的 JavaScript API。这种方法和分解问题的办法截然不同。它简化了 Web 开发人员 API 但添加了规范的大小。
HTML 5