XML Linking Language (XLink) — это язык описания межресурсных связей с помощью XML.
XLink обеспечивает полную функциональность гиперссылок HTML, и гораздо большее: он позволяет устанавливать отношение связи между более чем двумя ресурсами, ассоциировать различные метаданные со ссылками, соединять ресурсы без их модификации.
Язык XLink позволяет соединять произвольные ресурсы, а не только XML-документы. Понятие ресурса определяется в IETF RFC 2396 как любая адресуемая единица информации или сервиса. Если ресурс представляет собой правильно сформированный (well-formed) XML-документ, то спецификация XLink считает ресурсом также любую часть этого документа, определяемую идентификатором фрагмента на языке XML Pointer Language (XPointer). Подобный идентификатор фрагмента может дополнять адрес документа, задаваемый с помощью Унифицированного Идентификатора Ресурса (URI).
Язык XLink вводит два типа ссылок.
-
Расширенная ссылка (extended link). Расширенные ссылки выражают полную функциональность языка XLink, такую как входящие (inbound) и сторонние (third-party) арки, а также объединяют произвольное количество участвующих в них ресурсов. Участвующие ресурсы могут быть любой комбинацией локальных и удаленных.
В терминах XLink, локальный ресурс — это XML-элемент, который участвует в ссылке за счет того, что ссылочный элемент является для него родительским. Ресурс, который участвует в ссылке благодаря тому, что к нему адресуются с помощью унифицированного идентификатора URI, считается удаленным (remote), даже если он располагается в том же XML-документе, что и ссылка, или даже внутри ссылочного элемента.
Как результат, структура расширенных ссылок может быть достаточно сложной, включая в себя элементы, которые указывают на удаленные ресурсы; элементы, содержащие локальные ресурсы; элементы, которые определяют условия перехода по дугам; и элементы, обеспечивающие понимаемый человеком текст комментариев.
Обычно элементы типа «расширенная ссылка» располагаются отдельно от тех ресурсов, которые они соединяют (например, в совершенно разных документах). Таким образом, расширенные ссылки важны для ситуаций, когда соединяемые ресурсы доступны только для чтения; или когда модификация этих ресурсов является дорогостоящей и сложной операцией, тогда как модификация отдельно располагающейся ссылки достаточно проста; или когда ресурсы имеют форматы, не поддерживающие встроенные ссылки (как для многих мультимедийных форматов).
В языке XLink определяется способ, когда расширенной ссылке добавляется специальная семантика для указания на ссылочные базы (linkbases). Когда ссылка используется в таком назначении, она помогает XLink-приложению обрабатывать другие ссылки.
Следующий пример показывает использование расширенной ссылки языка XLink. В этом примере мы соединяем книгу из Электронной Библиотеки, автора книги и издательство. Мы даем описание автора в локальном ресурсе языка XLink, т.е. описание целиком располагается внутри ссылочного элемента. Книга и издательство — это удаленные ресурсы языка XLink, потому что на них ссылаются при помощи Унифицированных Идентификаторов Ресурсов. Каждый из трех ресурсов помечен собственной меткой (label). Эти метки используются при описании переходов. Мы определяем два перехода: от автора к книге и от книги к издательству. Каждый переход описывается своим собственным элементом типа дуга (arc). Заметим, что дуга, ведущая от книги к издательству, соединяет два удаленных ресурса.
<!--Расширенная ссылка языка XLink. Элемент может носить произвольное имя-->
Пример расширенной ссылки языка XLink. Ссылка устанавливает отношение связи между книгой (удаленный ресурс), ее автором (локальный ресурс) и издательством (удаленный ресурс).
<MyExtendedLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended">
<!--Элемент типа ресурс. Специфицирует локальный (в терминах XLink) ресурс-->
<author xlink:type="resource" xlink:label="A">
<!--Некоторая разметка, относящаяся к локальному ресурсу-->
<name>John</name>
<surname>Smith</surname>
</author>
<!--Элемент типа локатор. Адресуется к удаленному ресурсу по его URI-->
<book xlink:type="locator" xlink:label="B"
xlink:href="http://library.com/book.xml"/>
<publisher xlink:type="locator" xlink:label="P"
xlink:href="http://publisher.com"/>
<!--Элемент типа дуга. Определяет переход между ресурсами с метками "A" и "B"-->
<MyArcElement xlink:type="arc" xlink:from="A" xlink:to="B"/>
<MyArcElement xlink:type="arc" xlink:from="B" xlink:to="P"/>
</MyExtendedLink>
-
Простая ссылка (simple link) — это ссылка, которая ассоциирует в точности два ресурса -- один локальный и один удаленный; с аркой, идущей от первого ко второму. Таким образом, простая ссылка всегда является исходящей (outbound). Исходящая связь, в которой участвует ровно два ресурса, является наиболее распространенной (например, в эту категорию попадают ссылки A и IMG языка HTML). Поскольку простые ссылки предоставляют значительно меньше функциональных возможностей, чем расширенные ссылки, у простых ссылок нет какой-либо специальной внутренней структуры.
Хотя простые ссылки концептуально являются подмножеством расширенных ссылок, они синтаксически различны. В частности, для преобразования простой ссылки в расширенную ссылку требуется несколько структурных преобразований.
Предназначением простой ссылки является удобная короткая форма записи для эквивалентного случая расширенной ссылки. Один элемент вида "простая ссылка" объединяет в себе базовую функциональность элементов типа "расширенная ссылка", "локатор", "арка" и "ресурс". В том случае, когда реально требуется лишь подмножество свойств этих элементов, простая ссылка удобна как альтернатива расширенной ссылке.
Иллюстрация простой ссылки приведена на рисунке 3. Она ведет к содержанию некоторой книги, и напоминает гиперссылку A языка HTML. Однако, в отличие от гиперссылки HTML, простая ссылка языка XLink не требует именованного якоря для адресации к фрагменту документа, поскольку идентификатор фрагмента на языке XPointer предоставляет более гибкие возможности.
<!--Простая ссылка языка XLink. Элемент может носить произвольное имя-->
Пример простой ссылки языка XLink
<MySimpleLink
xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="simple"
xlink:href="http://library.com/book.xml#xpointer(doc/contents)">
Go to table of contents
<!--Какая-то более сложная разметка может быть описана здесь-->
</MySimpleLink>
Следует отметить, что спецификация XLink в основном фокусируется на структурах данных для описания ссылок, и не фокусируется на модели их поведения. Любой вид сложной интерпретации и обработки ссылок является ответственностью приложения более высокого уровня, базирующегося поверх языка XLink.
Содержание выпуска