Использование XLink для ссылки на узлы в одном документе

StackOverflow https://stackoverflow.com/questions/968394

  •  13-09-2019
  •  | 
  •  

Вопрос

Общая суть простой 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 - Не знаю, как вы, а чтобы их интерпретировать, нужен особый человек, и я сегодня не такой человек!

В любом случае, я понимаю, что большая часть XLink, похоже, ссылается на внешние ресурсы, и в большинстве примеров, которые я видел, используются http-ссылки на веб-ресурсы...Мне просто интересно, что можно сделать с помощью XLink, ссылаясь на определенную часть XML-документа.

Спасибо!

Это было полезно?

Решение

Я не думаю, что существует способ работать без использования XPointer или XPath.Я знаю, что вы не хотите, чтобы вас отсылали к спецификации, но:

Из Спецификация XLink:

Формат идентификатора фрагмента [...], используемого в ссылке URI, определяется спецификацией Xpointer.

Из Спецификация XPointer:

XPointer [...] основан на языке XML Path (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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top