XML, XLink 和 XPointer
XLink 用于在 XML 文档中创建超链接。
![]() |
|
XLink 浏览器支持
XLink 在 XML 文档中没有浏览器支持。
但是,所有主流浏览器都支持 SVG 中的 XLink。
XLink 语法
在 HTML 中,<a> 元素定义了一个超链接。然而,XML 的工作方式并非如此。在 XML 文档中,您可以使用任何您想要的元素名称——因此浏览器无法预测 XML 文档中的链接元素将是什么名称。
下面是一个在 XML 文档中使用 XLink 创建链接的简单示例
<?xml version="1.0" encoding="UTF-8"?>
<homepages xmlns:xlink="http://www.w3.org/1999/xlink">
<homepage xlink:type="simple" xlink:href="https://w3schools.org.cn">访问 W3Schools</homepage>
<homepage xlink:type="simple" xlink:href="http://www.w3.org">访问 W3C</homepage>
</homepages>
要访问 XLink 功能,我们必须声明 XLink 命名空间。XLink 命名空间是:"http://www.w3.org/1999/xlink"。
<homepage> 元素中的 xlink:type 和 xlink:href 属性来自 XLink 命名空间。
xlink:type="simple" 创建一个简单的“类似 HTML”的链接(表示“单击此处跳转到那里”)。
xlink:href 属性指定要链接到的 URL。
XLink 示例
以下 XML 文档包含 XLink 功能
<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns: xlink="http://www.w3.org/1999/xlink">
<book title="Harry Potter">
<description
xlink:type="simple"
xlink:href="/images/HPotter.gif"
xlink:show="new">
随着他第五年在霍格沃茨魔法学校的学习临近,15 岁的哈利·波特.......
魔法学校的学习临近,15 岁的哈利·波特.......
</description>
</book>
<book title="XQuery Kick Start">
<description
xlink:type="simple"
xlink:href="/images/XQuery.gif"
xlink:show="new">
XQuery Kick Start 提供了对 XQuery 标准的简洁介绍.......
对 XQuery 标准的简洁介绍.......
</description>
</book>
</bookstore>
示例说明
- XLink 命名空间在文档顶部声明 (xmlns: xlink="http://www.w3.org/1999/xlink")
- xlink:type="simple" 创建一个简单的“类似 HTML”的链接
- xlink:href 属性指定要链接到的 URL(在此情况下是一个图像)
- xlink:show="new" 指定链接应在新窗口中打开
XLink - 进一步探索
在上面的示例中,我们演示了简单的 XLinks。当访问远程位置作为资源而不是独立页面时,XLink 会变得更有趣。
如果我们设置 xlink:show 属性的值为 "embed",则链接的资源应在页面内联处理。考虑到这可能是一个另一个 XML 文档,您例如可以构建一个 XML 文档的层次结构。
您还可以使用 xlink:actuate 属性指定资源何时出现。
XLink 属性参考
Attribute | 值 | 描述 |
---|---|---|
xlink:actuate | onLoad onRequest other none |
定义链接资源的读取和显示时间
|
xlink:href | URL | 指定要链接到的 URL |
xlink:show | embed new replace other none |
指定链接的打开位置。默认值为 "replace" |
xlink:type | simple extended locator arc resource title none |
指定链接的类型 |
XPointer
![]() |
|
XPointer 浏览器支持
XPointer 没有浏览器支持。但 XPointer 在其他 XML 语言中使用。
XPointer 示例
在此示例中,我们将结合使用 XPointer 和 XLink 来指向另一个文档的特定部分。
我们将从查看目标 XML 文档(我们要链接到的文档)开始
<?xml version="1.0" encoding="UTF-8"?>
<dogbreeds>
<dog breed="Rottweiler" id="Rottweiler">
<picture url="https://dog.com/rottweiler.gif" />
<history>罗威纳犬的祖先可能是罗马
牧羊犬.....</history>
<temperament>自信、大胆、警惕且令人印象深刻,罗威纳犬
因其保护能力而成为热门选择....</temperament>
</dog>
<dog breed="FCRetriever" id="FCRetriever">
<picture url="https://dog.com/fcretriever.gif" />
<history>最早使用寻回犬之一是为了
帮助渔民从水中取鱼....</history>
<temperament>平毛寻回犬是一种甜美、活泼、
充满活力的狗,喜欢玩耍和寻回....</temperament>
</dog>
</dogbreeds>
请注意,上面的 XML 文档使用了 id 属性!
因此,XPointer 允许您链接到文档的特定部分,而不是链接到整个文档(如 XLink)。要链接到页面的特定部分,请在 xlink:href 属性的 URL 后面添加井号 (#) 和 XPointer 表达式,如下所示:xlink:href="https://dog.com/dogbreeds.xml#xpointer(id('Rottweiler'))"。该表达式引用目标文档中 id 值为 "Rottweiler" 的元素。
XPointer 还允许使用简写方法链接到具有 id 的元素。您可以直接使用 id 的值,如下所示:xlink:href="https://dog.com/dogbreeds.xml#Rottweiler"。
以下 XML 文档包含了我每只狗的犬种的更多信息链接
<?xml version="1.0" encoding="UTF-8"?>
<mydogs xmlns: xlink="http://www.w3.org/1999/ xlink">
<mydog>
<description>
安东是我最喜欢的狗。他赢了很多.....
</description>
<fact xlink:type="simple" xlink:href="https://dog.com/dogbreeds.xml#Rottweiler">
关于罗威纳犬的事实
</fact>
</mydog>
<mydog>
<description>
普鲁托是地球上最可爱的狗......
</description>
<fact xlink:type="simple" xlink:href="https://dog.com/dogbreeds.xml#FCRetriever">
关于平毛寻回犬的事实
</fact>
</mydog>
</mydogs>