Skip to content

XML XLink

XLink 是一个 W3C 标准,它定义了用于在资源之间创建链接的属性,主要用于 XML 文档内部。其目标是提供比基本 HTML 链接更强大的链接能力。

XLink 允许在 XML 文档中创建超链接。XML 文档中的任何元素都可以通过使用 XLink 属性充当链接。它支持简单的、单向的链接(类似于 HTML 的 <a> 标签)以及可以连接多个资源的更复杂的“扩展”链接。链接可以潜在地在单独的文档(链接库)中定义,尽管此功能很少实现。XLink 是一个成熟的 W3C 推荐标准,但其实际应用受到限制。

重要提示: 尽管 XLink 是一个标准,但浏览器对任意 XML 文档中 XLink 的普遍支持实际上是不存在的。虽然浏览器为特定的 XML 词汇表(如 SVG(可伸缩矢量图形))支持此概念,但它们通常不会直接处理加载的普通 XML 文件中的 XLink 属性。

因此,虽然理解语法在概念上很有用,但在 Web 浏览器环境中依赖 XLink 来链接通用 XML 数据是不切实际的。

与 HTML 专用的 <a> 元素不同,XML 使用命名空间和特定属性来表示任何元素上的链接。

这是一个演示简单 XLink 的示例,概念上类似于 HTML 链接:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Declare the XLink namespace -->
<document xmlns:xlink="http://www.w3.org/1999/xlink">
<heading>Useful Links</heading>
<resource xlink:type="simple"
xlink:href="https://www.w3.org/XML/"
xlink:show="new">
Visit the W3C XML Page
</resource>
<resource xlink:type="simple"
xlink:href="/local/resource.xml"
xlink:show="replace">
View Local Resource
</resource>
</document>

关键组成部分:

  1. 命名空间声明: xmlns:xlink="http://www.w3.org/1999/xlink" 使 xlink: 前缀可用,将其与官方的 XLink 命名空间 URI 关联起来。
  2. xlink:type="simple": 将链接标识为从当前元素到单个远程资源的简单、单向超链接。
  3. xlink:href="URL": 指定目标 URI(要链接到的资源),类似于 HTML 的 href 属性。
  4. xlink:show (可选): 建议如何显示链接的资源。常用值:
    • new:在新窗口/标签页中打开。
    • replace:在当前窗口/标签页中加载资源(如果省略,为默认行为)。
    • embed:将资源内容直接嵌入到当前文档中(很少支持)。
    • none:应用程序应决定如何处理。
  5. xlink:actuate (可选): 建议何时应遍历链接。
    • onRequest:仅在用户激活时(例如,点击)遵循链接(默认)。
    • onLoad:文档加载时自动遵循链接(simple 链接很少支持)。
    • none:应用程序应决定。

这里,XLink 将描述与外部图像资源关联起来:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns:xlink="http://www.w3.org/1999/xlink">
<book title="Learning XML">
<description
xlink:type="simple"
xlink:href="/images/learning_xml_cover.jpg"
xlink:show="new"
xlink:actuate="onRequest">
A comprehensive guide to XML syntax, DTDs, Schemas, XPath, and XSLT.
Click here for the cover image.
</description>
</book>
<book title="SVG Essentials">
<description
xlink:type="simple"
xlink:href="/images/svg_essentials_cover.gif"
xlink:show="new"
xlink:actuate="onRequest">
Learn how to create scalable vector graphics for the web using SVG.
Click here for the cover image.
</description>
</book>
</bookstore>

同样,虽然这是语法正确的 XLink,但典型的 Web 浏览器直接加载此 XML 文件时,很可能不会仅仅基于这些属性就使 <description> 元素成为可点击的链接。

XLink 还定义了“扩展链接”,它可以将多个资源链接在一起,可能使用不同的角色(弧)将它们连接起来。这比简单链接更复杂,支持也更少。

在现代 Web 开发中,链接主要通过 HTML(<a> 标签)来处理。当处理 XML 数据时,更常见的方法是:

  1. 使用 JavaScript 解析 XML。
  2. 根据 XML 数据动态生成 HTML 元素(包括 <a> 标签)(例如,从特定的 XML 元素或属性中提取 URL)。
  3. 在服务器或客户端使用 XSLT 将 XML 转换为 HTML,在输出中生成适当的 <a> 标签。

XLink 主要在特定的 XML 应用领域(如 SVG 链接)或在非浏览器环境中(由自定义处理实现 XLink 规范)保持其相关性。