IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  XML | Web development  >

XHTML 2.0 中的链接

XHTML 2.0 改变了人们对 Web 链接的看法

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Micah Dubinko (micah@brainattic.info), 首席顾问, Brain Attic, L.L.C.

2005 年 3 月 01 日

作为 Web 的基本组成部分,人们曾经多次尝试在简单 HTML 所允许的基本格式的基础上实现超文本链接的标准化。可以将这些尝试看作是平衡机器处理能力和编辑的方便性的努力。这一领域的最新规范 XHTML 2.0,可能已经找到了问题的答案。

基本上所有网站都共有的东西就是超链接。无论上网新手还是高水品的网上冲浪者都依靠链接在 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 为基础。





回页首


链接:从任何元素出发

为何不用 XLink?

W3C 有一个推荐标准 XML Linking Language(XLink —— 请参阅参考资料),其设计目的是用于超文本链接。但是,人们认为很多 XHTML 版本和 XLink 不兼容。不过,XHTML 仍然采用了该规范中定义的有用术语和语义。

XLink 有助于确定什么时候激活链接,包括通常用于网页图片的 onLoad 和用于手工激活超链接的 onRequest。XLink 还有助于确定链接的行为,包括替换当前页面的超链接 replace、弹出窗口的 new 和用于图片之类对象的 embed。XLink 还包含其他的规定,以确保这些概念不仅能用于基本的可视化浏览器,还可用于其他上下文,包括语音和其他可访问性应用程序。

那么,它在什么地方与 XLink 不兼容呢?这方面已经有很多的论述(请参阅参考资料),简而言之,XLink 要求所有的链接都命名为 xlink:href,其前缀被映射为通常意义上的名称空间。在本文中可以看到,XHTML 2.0 要求对不同类型的链接使用不同的名称,而且这些名称常常在同一个元素中。

清单 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”。然后可访问性工具可以对这些部分进行适当的处理。
  • nextfocusprevfocus 属性包含其他元素的 IDREF。作为一个整体,这些表单连接在一起可以导航整个文档,而不只是导航锚和表单控件。默认的导航顺序和元素在文档中出现的顺序一致,这些属性可以更精确地调整导航顺序。此外,如果 XHTML 文档引用包含片段,比如 http://search.example.com#query,而且该文档中包含带有 queryid 属性的可聚焦元素,则该元素将接收初始焦点,并将它作为进一步导航的起点。
  • targetxml: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>

HLink:一种替代方案?

为了克服 XLink 的明显不足,HTML 工作组起草了一份称为 HLink 的提议(请参阅参考资料),它汲取了 XLink 的优点,可以映射到任意元素的任何属性。HLink 有一些有趣的改进,比如用于鼠标右击或者等价操作的 onRequestSecondaryactuate 值、XLink 自身没有明确处理表单提交和错误处理这类事情的方法。

但是最终 HLink 并不是一种合适的解决方案。您可以直接使用 XLink 的术语和语义,没有必要在两者之间定义单独的层次。

导航列表帮助程序开发员指导用户访问自己的站点,这是很多开发人员试图通过表单完成的任务。但是,明确的超链接标记更加自然,更具有可访问性,适合传递导航信息。





回页首


内嵌属性集合

到目前为止,讨论的所有链接都是 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。



参考资料



关于作者

Micah Dubinko 的照片

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




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款