XML, XLink 和 XPointer
XLink 用于在 XML 文档中创建超链接。
|
XLink 浏览器支持
XML 文档中没有对 XLink 的浏览器支持。
但是,所有主流浏览器都支持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-like”链接(表示“点击这里去那里”)。
xlink:href 属性指定要链接到的 URL。
XLink 示例
以下 XML 文档包含 XLink 功能
<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns:xlink="http://www.w3.org/1999/xlink">
<book title="哈利·波特">
<description
xlink:type="simple"
xlink:href="/images/HPotter.gif"
xlink:show="new">
当他第五年在霍格沃茨魔法学校学习巫术和
巫术即将到来时,15 岁的哈利·波特......
</description>
</book>
<book title="XQuery 快速入门">
<description
xlink:type="simple"
xlink:href="/images/XQuery.gif"
xlink:show="new">
XQuery 快速入门提供了一个简洁的介绍
到 XQuery 标准......
</description>
</book>
</bookstore>
示例说明
- XLink 命名空间在文档开头声明 (xmlns:xlink="http://www.w3.org/1999/xlink")
- xlink:type="simple" 创建一个简单的“HTML-like”链接
- xlink:href 属性指定要链接到的 URL(在本例中为图像)
- xlink:show="new" 指定链接应该在新窗口中打开
XLink - 进一步
在上面的示例中,我们演示了简单的 XLink。XLink 在访问远程位置作为资源时变得更有趣,而不是独立页面。
如果将 xlink:show 属性的值设置为“embed”,则应该在页面内内联处理链接的资源。当你考虑到这可能是另一个 XML 文档时,你可以例如构建一个 XML 文档层次结构。
你还可以使用 xlink:actuate 属性指定资源应该何时出现。
XLink 属性参考
属性 | 值 | 描述 |
---|---|---|
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>
Anton 是我最喜欢的狗。他赢得了很多.....
</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>