Использование XLink для ссылки на узлы в одном документе - PullRequest
2 голосов
/ 09 июня 2009

Общая суть простого 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.

Спасибо!

1 Ответ

5 голосов
/ 09 июня 2009

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

Из спецификации XLink :

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

Из спецификации XPointer :

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>
...