Описание связей в XML при помощи технологии XLink. Простые связи. Связи поведения
XLink – технология установления связей между документами XML. Связывание в XML состоит из двух частей: XLink и XPointers.
XLink (XML Linking Language, Расширяемый язык соединений) определяет, как один документ связывается с другим. XPointers (XML Pointer Language, Расширяемый язык указателей) описывает, как общаются отдельные части документов. XLink указывает на универсальный локатор ресурса (URI), который устанавливает отдельный ресурс.
С помощью атрибута XLink xlink:type используемые элементы могут быть определены как связующие. Этот атрибут может иметь одно из следующих значений:
simple: простая связь;
extended: расширенная, возможно, многоресурсная связь;
locator: указатель на внешний ресурс;
resource: внутренний ресурс;
arc: правило обхода между ресурсами;
title: описательный заголовок для другого связующего элемента;
none: элемент не имеет смысла, определяемого XLink.
Префикс xlink должен быть привязан к универсальному идентификатору ресурса (URI) пространства имен http://www.w3.org/1999/xlink:
<my_element xmlns:xlink="http://www.w3.org/1999/xlink"> ...
Простые связи
Рассмотрим следующий пример:
<COMPOSER xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="simple"
xlink:href="http://www.users.interport.net/~beand/">
Beth Anderson
</COMPOSER>
<FOOTNOTE xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="simple"
xlink:href="footnote7.xml">7</FOOTNOTE>
<IMAGE xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="simple" xlink:href="logo.gif"
xlink:actuate="onLoad" xlink:show="embed"/>
В этом примере элементы имеют семантические имена, которые описывают их содержание, а не то, как они себя ведут. Информация о том, что эти элементы - связи, присутствует в атрибутах, но не в именах элементов. Атрибуты же определяют поведение связывания.
В самом первом элементе COMPOSER атрибут xlink:href определяет адресат связи. Значение атрибута - абсолютный URL http://www.users.interport.net/~beand/.
Этот связующий элемент описывает соединение элемента COMPOSER текущего документа, содержание которого "Beth Anderson", с удаленным документом в http://www.users.interport.net/~beand/. Если бы мы включили этот элемент в документ XML и загрузили его в Web-браузер, поддерживающий XLink, как, например, Mozilla or Netscape 6, браузер подчеркнул бы эту связь, окрасив ее в синий цвет, и при нажатии на нее открыл страницу http://www.users.interport.net/~beand/.
Однако, данную ссылку можно интерпретировать более абстрактно: как просто определение однонаправленного соединения от одного ресурса, элемента COMPOSER, к другому ресурсу, Web-странице в http://www.users.interport.net/~beand/.
В элементе FOOTNOTE значение атрибута xlink:href - это относительный URL footnote7.xml. Этот связующий элемент описывает соединение элемента FOOTNOTE текущего документа, содержание которого "7", с документом с именем footnote7.xml, находящемся на том же сервере, в том же каталоге, что и документ, в котором появляется эта связь.
Наконец, в третьем элементе IMAGE значение атрибута xlink:href - это относительный универсальный локатор ресурса logo.gif. И снова протокол, хост и каталог этого документа берется из протокола, хоста и каталога документа, в котором появляется эта связь. Однако, этот элемент требует немного отличного поведения. Вместо ожидания, пока пользователь активизирует связь, атрибут xlink:actuate просит, чтобы связь была активизирована автоматически, как только этот документ загрузится. Атрибут xlink:show требует, чтобы результат был встроен в текущий документ, а не заменял его.
Связи поведения
Связующие элементы могут включать два факультативных атрибута, которые предоставляют приложениям информацию о том, как связь ведет себя при активизации.
Атрибут xlink:show рекомендует, как следует отображать содержание, когда связь активизирована, например, должно ли открываться новое окно, чтобы показать адресуемое содержание, либо это содержание должно загружаться непосредственно в текущее окно.
Атрибут xlink:actuate позволяет определить, когда активизировать связь, например, сразу после загрузки документа или исключительно после запроса пользователя.
Важно отметить, что хотя указанные поведения являются независимыми от приложений, программы могут игнорировать рекомендации этих атрибутов.
Атрибут xlink:show может принимать одно из следующих значений:
replace;
new;
embed;
other;
none.
Если значение xlink:show равно replace, то при активизации связи (как правило, посредством щелчка мышкой по этой связи, по крайней мере, в GUI-браузерах) адресат связи заменяет текущий документ в том же самом окне.
Если значение xlink:show равно new, то активизация связи вызывает открытие нового окна, в котором отображается адресуемый ресурс.
Если значение xlink:show равно embed, то при активизации связи адресуемый ресурс вставляется в существующий документ. Что именно это означает - зависит от приложения. Обычно предполагается, что приложение должно каким-то образом изобразить связываемое содержание и показать его как часть заключительного документа.
Если значение xlink:show равно other, то предполагается, что приложение будет искать другую разметку в документе, которая объяснит, что делать.
Наконец, атрибуту xlink:show может быть присвоено значение none, чтобы показать, что документ не содержит никакой информации, которая могла бы помочь приложению решить, что, если уж на то пошло, делать со связью. В этом случае все зависит только от приложения.
Независимо от того, какое поведение атрибут xlink:show предлагает, браузер или иное приложение, читающее документ, при активизации связи может делать все, что угодно, в том числе и ничего. Например, браузер, у которого отключена автоматическая загрузка изображений, может решить проигнорировать xlink:show="embed".
Атрибут xlink:actuate может принимать одно из следующих значений:
onRequest;
onLoad;
other;
none.
Значение onRequest указывает, что связь должна обходиться только тогда, когда пользователь запросил ее и если он это сделал. (Это поведение обычной связи HTML.)
С другой стороны, если атрибут xlink:actuate связующего элемента равен onLoad, эта связь прослеживается, как только загружен документ, содержащий эту связь.
Если значение xlink:actuate равно other, то приложение должно искать в документе другую разметку, не описанную с помощью XLink, чтобы решить, когда обходить эту связь.
Наконец, присвоение атрибуту xlink:actuate значения none, означает, что приложение будет самостоятельно решать, обходить ли и, если да, то когда обходить эту связь.