【问题标题】:Using XLink to refer to nodes within same document使用 XLink 引用同一文档中的节点
【发布时间】:2009-06-09 05:59:44
【问题描述】:

到同一文档中另一个节点的简单 XLink 的一般要点似乎是:

<root xmlns:xlink="http://www.w3.org/1999/xlink">
  <firstChild id="ID1" />
  ...
  <ref xlink:href="#ID1" />
</root>

不使用 XPointer 或 XPath,这是否与使用 XLink 一样多?你能不能做一个 XLink,比如说,引用 customId,看起来像:

<root xmlns:xlink="http://www.w3.org/1999/xlink">
  <firstChild id="ID1" customId="{1234-5678}" />
  ...
  <ref xlink:href="#customId/{1234-5678}" />
</root>

请不要只向我推荐W3 spec - 我不了解你,但需要一种特殊的人才能解释它们,而我今天不是那个人!

无论如何,我知道大多数 XLink 似乎都是关于引用外部资源,而且我见过的大多数示例都使用指向 Web 资源的 http 链接......我只是好奇你可以用 XLink 做什么引用 XML 文档中的特定部分。

谢谢!

【问题讨论】:

    标签: xml xpath xpointer xlink


    【解决方案1】:

    我认为没有使用 XPointer 或 XPath 的方法。我知道您不想被提及规范,但是:

    来自XLink spec

    片段标识符的格式 [...] URI 参考中使用的是 由 XPointer 规范指定。

    来自XPointer spec

    XPointer [...] 基于 XML 路径语言 (XPath)

    所以我会说它是这样的:

    <root xmlns:xlink="http://www.w3.org/1999/xlink">
      <firstChild id="ID1" customId="{1234-5678}" />
      ...
      <ref xlink:href="#xpointer(/root/firstChild[@customId = '{1234-5678}'])" />
    </root>
    

    【讨论】:

    • 甚至 href="#ID1" 是 href="xpointer(id('ID1'))" 的简写。没有 XPointers 就无法完成。
    • 好吧,它开始变得更有意义了。实际上一切都回到了 XPath,这有点好,因为我对它相当熟悉。现在只需要学习 XPointer 的细节!谢谢。
    • 请注意,XLink 规范中提到的 XPointer 文档已被 XPointer 框架取代:w3.org/TR/xptr-framework。 xpointer() 方案在w3.org/TR/xptr-xpointer 中定义。
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2017-06-10
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多