2009-06-09 5 views
1

Общая суть простого XLink на другой узел в том же документе, кажется:Использование 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, похоже, касаются внешних ресурсов, и большинство примеров, которые я видел, используют http-ссылки для веб-ресурсов ... Мне просто интересно, что вы можете сделать с XLink в условия обращения к определенной части документа XML.

Спасибо!

ответ

5

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

От XLink spec:

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

Из XPointer spec:

XPointer [...] основан на XML Path Language (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> 
+1

Даже href = "# ID1" является сокращением для href = "xpointer (id ('ID1'))". Не может быть сделано без XPointers. – Onots

+0

Хорошо, это начинает иметь смысл. Это хорошо, что все возвращается к XPath на самом деле, так как я довольно хорошо знаком с этим. Просто нужно изучить особенности XPointer сейчас! Благодарю. – Gavin

+1

Обратите внимание, что документ XPointer, упомянутый в спецификации XLink, был заменен инфраструктурой XPointer: http://www.w3.org/TR/xptr-framework/. Схема xpointer() определена в http://www.w3.org/TR/xptr-xpointer/. – Tomalak