HTML的未来: XHTML 2.0


W3C 有四个工作组正在建立一些特别有趣的规范:

HTML(现在的 XHTML)
XForms
Web API
Web Application Format
本文主要讨论 HTML 工作组的研究,但是也有必要作为背景知识讨论一下其他规范,因为这些研究将造就 Web 的未来。

XForms

XForms 是 W3C 提出的当前 HTML 表单的后继者。它们被设计成具有更丰富的功能,并将其结果作为 XML 文档传递给处理应用程序。XForms 是模块化的,因此可在任何上下文中使用,而不仅仅是捆绑到 XML 中使用。XForms 与 HTML 表单的主要区别有:

XForms 将用户界面表示从数据模型定义中分离出来。

XForms 可以创建和消费 XML 文档。

XForms 是设备中立的。比如,可以在语音浏览器和桌面浏览器中使用同一个表单。

XForms 允许在提交之前验证和约束输入。

XForms 不使用脚本就能实现多阶段表单。

因为是一种模块化语言,XHTML 2.0 引入 XForms 模块来实现表单功能。

Web API

W3C Web API 工作组负责为客户端 Web 应用程序开发制定标准 API。其中第一种也是最常用的一种 API 就是作为 Ajax(也是 WHATWG 描述的一种技术) 核心的 XMLHttpRequest 功能。程序员可以通过 ECMAScript 和其他浏览器环境支持的任何语言来使用这些 API。

可能制定的其他 API 包括:

处理浏览器 Window 对象的 API

DOM Level 3 Events and XPath 规范

时间事件 API

用于非 HTTP 联网的 API,如 XMPP 或 SIP

客户端持久存储 API

拖放 API

监控下载的 API

更新文件的 API

虽然这些 API 不一定会随着 XHTML 2.0 一起实现,但在未来四年中,浏览器很可能将两方面结合起来为 Web 应用程序提供丰富的平台。

Web Application Format

XHTML 2.0 是 Web 应用程序用户界面问题的一部分,但不是全部。Mozilla XUL 和 Microsoft XAML 这些技术已经为用户界面提供了丰富的 XML 词汇表。

Web Application Format 工作组负责按照 XUL 或 XAML 的方式开发指定用户界面的声明性格式,以及 XBL2 的开发,这是一种在自定义标记和已有技术之间提供绑定的声明性语言。实际上,XBL2 为程序员提供了编写新的 Web 应用程序部件的一种方法。

为何要创建 XHTML 2.0?

XHTML 1.0 的目的是将 HTML 转化成 XML 词汇表。它为 HTML 引入了 XML 语法约束:区分大小写、必须用引号括起来的属性值和成对的标签。这项任务完成了,XHTML 2.0 致力于解决 HTML 作为一种 Web 页面标记语言的问题。

W3C 的 Steven Pemberton 在阿姆斯特丹 XTech 2005 大会上所作的演讲中(请参阅参考资料)阐述了 XHTML 2.0 的设计目标:

尽可能的使用 XML:如果一种语言特性已经在 XML 中存在,就不要重复或者重新发明。

结构高于表示:感谢 CSS 样式表,HTML 不再需要专门的表示性标签。

使 HTML 更容易编写:删除 HTML 中一些无用的特征。

更高的可访问性、设备中立性:尽量避免假设读取文档的方式。

改进的国际化。

更好的表单:盼望已久的改进!

减少脚本的需要:HTML 本身包含典型的脚本用法。

更好的语义:使 HTML 和语义 Web 应用程序更容易集成。

对于任何曾经用过 HTML 的人来说,这些目标显然都是值得期待的。现在我将稍微详细地考察 XHTML 2.0 实现这些目标的一些方法。

章节和段落

多年前我刚刚接触 HTML 的时候,还记得多次对这种语言的文本结构元素感到不知所措。为何有六层标题,什么时候使用合适?而且,为什么标题不包含它们所代表的章节?XHTML 2.0 为此提供了新的答案,增加了 <section> 和 <h> (heading) 元素。

<section><h>Level 1 heading</h>...<section><h>Level 2 heading</h>...</section></section> 

与 XHTML 1.0 相比,这种安排更符合逻辑,其他很多标记词汇表的用户对此也很熟悉。对程序员来说,一个很大的好处是可以在文档中包含内容章节,而不需要重新编码标题层次。

对这些标题可以使用 CSS。人们可能期望 XHTML 2.0 的浏览器默认实现能够预先定义一部分,具体来说可能像下面这样(摘自 XHTML 2.0 规范):

h {font-family: sans-serif; font-weight: bold; font-size: 200%}section h {font-size: 150%} /* A second-level heading */section section h {font-size: 120%} /* A third-level heading */

 

XHTML 1.0 中另一个不合逻辑的地方是,要使用列表,则必须将列表放在段落中。事实上,必须使用任何块级元素(blockquote、预格式化的章节、table 等)。如果这些内容仅仅是同一段落流中的一部分,这样做常常不合逻辑。XHTML 2.0 去掉了这些限制。惟一的限制是不能将一个段落放到另一个段落中。

图像

HTML 中的 <img> 标签实际上非常不灵活。正如 Pemberton 所说,除了 alt 文本(妨碍采用新的图像格式)它不含任何应变机制,alt 文本不能使用标记,longdesc 属性由于笨拙而从来没有被使用过。(longdesc 用于提供一个 URI,该 URI 指向关于图片的、与 alt 属性中的说明相比更详细的描述。)

XHTML 2.0 为这个问题提供了一种很好的解决方案:允许任何 元素具有 src 属性。浏览器可以用这个 URI 中的内容代替元素中的内容。最简单的情况就是处理图像。但没有人说不能是 SVG、XHTML 或浏览器能够呈现的任何内容类型。

<img> 标签本身仍将保留,但该标签中现在包含一些内容。src 属性的新操作意味着 alt 文本现在变成了元素内容,比如下面的例子:

<p><img src="/files/uploadimg/20060403/1606520.png">H<sub>2</sub>O</img></p> 

对于日语等语言来说,这是一个好消息,因为 Ruby 注释(请参阅参考资料)要求行内标记,而以前这在属性值中这是不可能的。

XHTML 2.0 在 <object> 元素中提供了更一般的图像包含形式,该元素可用于包含任何对象类型,从图片、电影到 Flash 或 Java 技术这样的可执行代码。这样就可以通过巧妙的技术,根据浏览器能力进行更好的委派,<object> 元素可以多层嵌套。比如,最外层是一段 Flash 电影,其中包含一个 AVI 视频文件,再进一层是一个静态图片,最后在嵌套对象的核心是一段文本内容。更多信息请参阅 XHTML Object Module(参考资料中的链接)。

可扩展的语义

很长一段时间以来,一些 HTML 元素具有具有语义联系,比如 <address> 和 <title>。问题是这类元素很少而且不能扩展。其间,有人尝试用 class 属性为 HTML 元素提供语义。与 class 的设计初衷相比,这样就大大延伸了其功能,而且由于应用 CSS 样式的属性的广泛使用,所以很难明确应用这种用法。(有人怀疑关于 class 用途的断言,但后者是很难驳倒的。)

XHTML 2.0 没有采用这些特别的方法,而是引入了一种方法在文档中指定类似 RDF 的元数据。RDF 陈述是一个三元组(主题、属性、对象)。比如,在英语中可能有三元组:“my car”、“is painted” 和 “red”。

about 属性类似于指定 RDF 三元组 subject 的 rdf:about——可以省略,则文档本身就是主题。property 属性是引用性质的 URI(如果给定适当声明的前缀可使用缩写形式,更多细节请参阅 XHTML 2.0 Metainformation Attributes Module,见参考资料)。

最后,三元组的第三个值由 about 和 property 属性作用的元素内容给出,如果 content 属性值为空则没有内容。这是一个例子,如果使用过 HTML <meta> 标签就会非常熟悉,它指定了页面头 (page header) 的创建者:

<html xmlns="http://www.w3.org/2002/06/xhtml2/" xml:lang="en"><head><title>Edd Dumbill's Home Page</title><meta property="dc:creator">Edd Dumbill</meta></head>...</html> 

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3