基本上所有网站都共有的东西就是超链接。无论上网新手还是高水品的网上冲浪者都依靠链接在 Web 上导航。在 XML 开发的初期,标准的制定者一直将链接看作是整个脉络的重要组成部分 —— 事实上,链接规范曾被称为“Extensible Markup Language (XML): Part 2. Linking”(请参阅参考资料)。
Web 程序开发员们都非常熟悉清单 1 中的简单链接标记,其中 href 属性创建的链接可用于导航,而 src 属性用于创建通常自动加载的链接。
清单 1. HTML 链接
<a href="http://example.com" rel="example"
title="link to a remote page">
<img src="http://example.info/img.png"
alt="link to a remote image" />
</a>
|
XHTML version 2.0 保留了这些基本的方法,但是也增加了一些新的变化。以下描述以 2004 年 7 月 22 日发布的 XHTML 2.0 Working Draft 为基础。
清单 1 中使用 a(代表“anchor(锚)”)元素定义了一个外向链接。但是多数人都认为锚是链接目标,而不是源。只是由于历史的原因,a 元素才变成了指定链接的实际方法。换句话说,没有理由不使用其他元素作为链接端点。XHTML 2.0 放宽了这一限制,扩展了 href 和其他几个属性的使用范围。
表的单元格、图片、列表项等等都可以是链接。只要增加 href 属性并给定目标 URL 即可。事实上,XHTML 2.0 定义的几个属性集合中就包括超文本属性集合,适用于 XHTML 2.0 中的每个元素。
除了 href 之外,XHTML 2.0 还提供了一组附加属性来进一步完善链接的描述。这些属性在 XHTML 2.0 进入 Last Call 阶段时很可能会稍作修改,任何可以使用 href 的地方都可以使用这些属性:
-
hreflang表明链接的远程端所需要的语言,它可以是一个用空格分隔的列表。 -
hreftype表明链接目标的媒体类型,也就是说,指出它是 SVG、XHTML,还是其他类型。它也可以是空格分隔的列表。 -
cite指明某些文本的源文档引用,通常是某种类型的引用。以前该属性只能用于blockquote这类属性。现在应用的范围放宽了,程序开发员可以考虑用更加丰富的方式链接超文本。最有意思的是,XHTML 规范指出,用户代理“应该”以某种方式支持这种链接。具体的细节留给软件,但是我希望在右击菜单或者更有创意的浏览器中看到这种链接。 -
access(和以前版本中的accesskey不同)为文档中的不同部分指定简单的名称,比如“contents”。然后可访问性工具可以对这些部分进行适当的处理。 -
nextfocus和prevfocus属性包含其他元素的 IDREF。作为一个整体,这些表单连接在一起可以导航整个文档,而不只是导航锚和表单控件。默认的导航顺序和元素在文档中出现的顺序一致,这些属性可以更精确地调整导航顺序。此外,如果 XHTML 文档引用包含片段,比如http://search.example.com#query,而且该文档中包含带有query的id属性的可聚焦元素,则该元素将接收初始焦点,并将它作为进一步导航的起点。 -
target和xml:base在 XHTML 2.0 中基本上没有变。Web 程序开发员可能已经习惯了用target="_new"规定链接打开新的窗口。XHTML 2.0 不再硬编码任何特殊值,而是提供了一个相关规范 XFrames(请参阅参考资料),用这种规范来定义链接的资源如何适应整个环境。xml:base属性设置负责解释包含相对 URL 的上下文。
超文本属性集合的一种应用是导航列表,这是 XHTML 2.0 中新增的一种特性,如清单 2 所示:
清单 2. 导航列表
<nl xml:base="http://xformsinstitute.com/essentials/browse/"> <label>Table of Contents</label> <li href="ch01.php">Introduction to Web Forms</li> <li href="ch02.php">XForms Building Blocks</li> <li href="ch03.php">XPath in XForms</li> ... </nl> |
导航列表帮助程序开发员指导用户访问自己的站点,这是很多开发人员试图通过表单完成的任务。但是,明确的超链接标记更加自然,更具有可访问性,适合传递导航信息。
到目前为止,讨论的所有链接都是 href 风格的链接,即用户通过单击触发某些事情。但是还会遇到直接加载的链接,特别是图片。XHTML 2.0 为此定义了内嵌属性集合。
该集合中的典型属性是 src,它包含远程资源的 URL,通常在主文档加载的时候传输,不需要用户采用特殊操作。另一个属性 type 提供了在另一端能够看到什么的元数据。
有一个关键设计特性很容易被忽略:如果不能加载,所链接的内容就会代替该元素;换句话说,有一种内置的应变机制,即使有多层嵌套,也能应付。清单 3 显示了工作原理。
清单 3. 内嵌的应变机制
<p href="http://scp.example.info" src="cow.jpg" usemap="#map1">
<nl>
<li href="scp.html"/>
<li href="/"/>
</nl>
</p>
|
在清单 3 中,纯文本浏览器或者关闭图像的图形化浏览器可以看到一个导航列表,但是其他人可以看到 p 元素定义的交互式图像映射,在 map1 中说明了这些细节。这种应变行为可用于改善 object 元素的效果,如清单 4 所示。
清单 4. 对象应变
<!-- First, try Flash -->
<object src="earthtime.swf" type="application/x-shockwave-flash">
<!-- Else, try the image -->
<object src="earthtime.jpg" type="image/jpeg"/">
<!-- Else, alternate text -->
A map of the earth showing night and day
</object>
</object>
|
遇到清单 4 中的代码后,浏览器首先尝试加载 Flash applet。如果由于某种原因失败,浏览器就会尝试加载 JPG 图像。如果这也失败了,那么浏览器会显示最内层的替代文本。Web 用户欢迎这种灵活的处理方式。
可以肯定地说,围绕超文本链接进行的标准开发还没有实现人们最初的设想。但最终似乎还是有了一些进展。对那些主要靠浏览器的查看源代码特性进行学习的程序设计员来说,XHTML 2.0 在很大程度上保持了友好性,同时又增加了一些功能和灵活性。
XHTML 2.0 将进入 Last Call 阶段,其间工作组将征求一些建设性的意见。如果以其他 W3C 研究为榜样,这可能是一个漫长的、充满争议的过程。但即使现在,XHTML 2.0 仍然产生了积极的影响,刺激了 Web 开发社区内关于链接的讨论。所有有权发言的人现在都认识到了这个问题,都在认真讨论它,这是一件好事。
只有时间会告诉您最终将得到什么结果。很多人希望 XHTML 2.0 能够创造一个更好的 Web。
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文。
- 请参阅 Robin Cover 的主页,其中包括完整的 XML 和链接文档目录。这些主题的联系非常紧密,很多较早的链接出现在 XML 页面上,另一些则列在 XLL 页面中。
- 通过参阅“A Hyperlink Offering”,从不同的角度看 XHTML 链接,作者通过两个虚构的人物讨论了超文本链接遇到的一些挑战。
- 直接从源代码中阅读 XLink 1.0 W3C Recommendation。
- 然后,与 HLink Working Draft(2002 年 9 月,可能不会再更新了)进行比较。
- 最后请参阅最新的 XHTML 2.0 Working Draft,看看 XHTML 链接的当前状态。
- 了解这些框架的替代品(常常用于
target属性)XFrames,它是和 XHTML 2.0 一起使用的 W3C 工作草案。 - 看看 W3C 是否开发了新的规范或文档,请参阅 Technical Reports 页面。
- 在线阅读 O’Reilly 的书籍
XForms Essentials
。XForms 采用了与 XHTML 2.0 类似的链接方法。也可以从 developerWorks Developer Bookstore 订购这本书。
- 如果希望彻底了解主要 XML 标准之间的关系,请参阅 Uche Ogbuji 的 XML 标准调查:
- XML 标准概览:第 1 部分(2004 年 1 月)
- XML 标准概览:第 2 部分(2004 年 2 月)
- XML 标准概览:第 3 部分(2004 年 2 月)
- XML 标准概览:第 4 部分(2004 年 3 月)
- 在 developerWorks XML 专区可以找到更多 XML 资源。
- 了解如何才能成为一名 IBM 认证的 XML 及相关技术的开发人员。

Micah Dubinko 是 Brain Attic, L.L.C. 的顾问和创建者之一,这家软件生产和咨询公司的专长是防止信息泛滥。他为 O'Reilly Media 撰写了 XForms Essentials ,曾经加盟开发 XForms 1.0 的工作组。他在 Phoenix, AZ 定居和工作。您可以通过 micah@brainattic.info 与他联系。