Xlink href что это
XLink определяет методы создания ссылок внутри XML документов.
Как используется XLink
Синтаксис XLink
В HTML гиперссылки определяются при помощи элемента . В XML же это работать не будет. В XML документах разрешено использовать элементы с любыми именами, таким образом браузеры не могут знать заранее, какие элементы в XML документах используются в качестве ссылок.
Ниже приводится простой пример использования XLink для создания ссылок в XML документе:
Чтобы иметь возможность использовать XLink, мы должны декларировать пространство имен XLink. Пространством имен XLink является: «http://www.w3.org/1999/xlink«.
Атрибуты xlink:type и xlink:href в элементе берутся из пространства имен XLink.
Атрибут xlink:type=»simple» создает простую «HTML-подобную» ссылку (означает «нажмите сюда, чтобы перейти туда»).
Атрибут xlink:href определяет URL ссылки.
Поддержка XLink браузерами
Браузеры не имеют поддержки XLink в XML документах. Тем не менее, все основные браузеры поддерживают простые XLink в SVG.
Пример XLink
Следующий XML документ содержит функционал XLink:
Написано же здесь следующее:
XLink – Идем дальше
В примере выше были продемонстрированы простые ссылки XLink. Однако XLink становится интереснее, когда необходимо создать доступ к удаленный ресурсам, а не к отдельным страницам.
Если установить атрибуту xlink:show значение «embed», то ресурс, на который создается ссылка, будет встроен в код страницы. Если создается такая ссылка на другой XML документ, то появляется возможность создавать иерархию XML документов.
Также, вы можете определять то, когда ресурс должен отображаться. За это отвечает атрибут xlink:actuate.
Журнал ВРМ World
Связи в XML: XLink (часть 1)
Введение
Что такое XLink?
Непременное условие успеха технологии Web лежит в ее способности связывать ресурсы. То, что «Всемирная паутина» опирается на признанный гоферовский протокол, может быть объяснено хотя бы тем, что HTML позволяет вставлять в документы ссылки гипертекста. С их помощью можно помещать изображения на страницы документов, а также переходить от одного документа к другому или же от одной его части к другой. С учетом того, что XML может быть преобразован в HTML для последующего просмотра, синтаксис, который, используется в HTML для задания связей, может быть перенесен и в XML.
Однако, связывание в HTML имеет ряд ограничений. Универсальные локаторы ресурсов (URL) указывают только на один документ. Большая глубина детализации, например, третье предложение в семнадцатом параграфе, невозможно, если, конечно, в рассматриваемом документе заранее не расставлены поименованные указатели (anchor). Но для этого необходимо иметь доступ к документу, на который требуется указывать.
Связывание в XML состоит из двух частей: XLink и XPointers. XLink (XML Linking Language, Расширяемый язык соединений) определяет, как один документ связывается с другим. XPointers (XML Pointer Language, Расширяемый язык указателей) описывает, как общаются отдельные части документов. XLink указывает на универсальный локатор ресурса (URI), который устанавливает отдельный ресурс.
Вводный пример
Постановка задачи
Предположим, что вы хотите выразить на XML отношение между художником и окружающей его обстановкой. Это подразумевает создание связей между этим творческим работником и его наследием, а также задание связи к описанию исторических событий, имевших место на протяжении его жизни. Данные о художнике могут быть записаны в следующем файле:
Помимо этого, в отдельные файлы включаются описания периодов, на которые можно условно разбить его творчество:
Выполнение поставленного выше задания (то есть создание файла, который устанавливает связь между художником и его творческим наследием и этапами творческого пути) является задачей, которую невозможно решить с помощью «HTML-ных» тегов и атрибутов «img». Это объясняется целым рядом причин:
Решение с помощью XLink
После того, как мы объявили расширенную связь, необходимо указать задействованные ресурсы. Поскольку информация о художнике и его жизни хранится вне нашего документа (и, следовательно, мы не можем ею управлять), чтобы ссылаться на нее, воспользуемся элементами XLink, атрибуты которых имеют значение locator. Напомним еще раз, что подход заключается не в задании имени тега, а в том, чтобы с помощью атрибутов XLink позволить помечать элементы как элементы типа locator:
В этом примере упущен только один момент: необходимо указать, как ресурсы относятся друг к другу. Для этого используются атрибуты, значения которых равны arc:
Нетрудно видеть, что использование XLink позволяет упростить нашу задачу и свести ее к созданию файла XML, содержащего элементы, подобные приведенным выше, где ясно и четко указаны все ресурсы и их отношения. Перейдем теперь к детальному рассмотрению механизма связывания XLink: атрибутов, их значений и правил их использования.
Связующие элементы
Атрибут xlink:type
Как было указано выше, с помощью атрибута XLink xlink:type используемые элементы могут быть определены как связующие. Этот атрибут может иметь одно из следующих значений:
Префикс xlink должен быть привязан к универсальному идентификатору ресурса (URI) пространства имен http://www.w3.org/1999/xlink:
Как обычно, этот префикс может меняться, при условии, что URI остается прежним. Префикс xlink является привычным и должен использоваться, если у вас нет действительно веских причин, чтобы его изменить.
Глобальные атрибуты
Помимо указанного атрибута type XLink предоставляет ряд атрибутов, называемых глобальными, которые позволяют установить, является ли рассматриваемый элемент связующим, а также определить многие его свойства (например, когда загружать связанные ресурсы, как их увидеть, если они загружены, и так далее). В приведенной ниже таблице перечислены глобальные атрибуты, поддерживаемые XLink:
Таблица 1. Глобальные атрибуты
Атрибут определения типа | type |
Атрибут локатор | href |
Семантический атрибут | role, arcrole, title |
Атрибут поведения | show, actuate |
Атрибут обхода | label, from, to |
Важное замечание. Согласно принятой терминологии, если элемент включает атрибут type со значением V, этот элемент именуется как элемент типа V, каким бы ни было его действительное имя.
Отношение элемента к определенному типу XLink накладывает на использование элементов следующие ограничения:
В таблице 3 показано, для каких элементов XLink какие подэлементы XLink являются допустимыми.
Таблица 2. Правила использования атрибутов (в соответствии с рекомендацией консорциума W3C)
Атрибут | simple | extended | locator | arc | resource | title |
type | R | R | R | R | R | R |
href | O | R | ||||
role | O | O | O | O | ||
arcrole | O | O | ||||
title | O | O | O | O | O | |
show | O | 0 | ||||
actuate | O | O | ||||
label | 0 | 0 | ||||
from | 0 | |||||
to | O |
Таблица 3. Значимые типы потомка (в соответствии с рекомендацией консорциума W3C)
Тип предка | Значимые типы элемента потомка |
simple | — |
extended | locator, arc, resource, title |
locator | title |
arc | title |
resource | — |
title | — |
Простые связи
Рассмотрим следующий пример:
beand/. Этот связующий элемент описывает соединение элемента COMPOSER текущего документа, содержание которого «Beth Anderson», с удаленным документом в http://www.users.interport.net/
beand/. Если бы мы включили этот элемент в документ XML и загрузили его в Web-браузер, поддерживающий XLink, как, например, Mozilla or Netscape 6, браузер подчеркнул бы эту связь, окрасив ее в синий цвет, и при нажатии на нее открыл страницу http://www.users.interport.net/
Однако, данную ссылку можно интерпретировать более абстрактно: как просто определение однонаправленного соединения от одного ресурса, элемента COMPOSER, к другому ресурсу, Web-странице в http://www.users.interport.net/
Следующий подраздел посвящен этим двум атрибутам: xlink:actuate и xlink:show.
Связи поведения
Как было сказано выше, связующие элементы могут включать два факультативных атрибута, которые предоставляют приложениям информацию о том, как связь ведет себя при активизации.
Атрибут xlink:show рекомендует, как следует отображать содержание, когда связь активизирована, например, должно ли открываться новое окно, чтобы показать адресуемое содержание, либо это содержание должно загружаеться непосредственно в текущее окно.
Атрибут xlink:actuate позволяет определить, когда активизировать связь, например, сразу после загрузки документа или исключительно после запроса пользователя.
Важно отметить, что хотя указанные поведения являются независимыми от приложений, программы могут игнорировать рекомендации этих атрибутов.
Атрибут xlink:show
Атрибут xlink:show может принимать одно из следующих значений:
Если значение xlink:show равно replace, то при активизации связи (как правило, посредством щелчка мышкой по этой связи, по крайней мере, в GUI-браузерах) адресат связи заменяет текущий документ в том же самом окне. (Это поведение является действием по умолчанию для связей HTML.) Например:
Если значение xlink:show равно new, то активизация связи вызывает открытие нового окна, в котором отображается адресуемый ресурс. Это похоже на поведение связей HTML, когда атрибуту target присвоено значение blank. Например:
Если значение xlink:show равно other, то предполагается, что приложение будет искать другую разметку в документе, которая объяснит, что делать. Как правило, это могло бы использоваться, чтобы отдельное приложение XML использовало другие, отличные от XLink элементы для описания поведения связи. Например, у многих Web-страниц в заголовке находится элемент LINK, который указывает таблицу стилей (style sheet) и может выглядеть следующим образом:
Это связь, но то, что находится в ее конце, не заменяет текущий документ, не встраивается в него и не отображается в новом окне. Для XML-документов вы могли бы условиться, что такое поведение предполагается всякий раз, как встречается элемент STYLESHEET. Поскольку это поведение не является ни одним из трех предопределённых поведений связей, необходимо присвоить xlink:show значение other.
Наконец, атрибуту xlink:show может быть присвоено значение none, чтобы показать, что документ не содержит никакой информации, которая могла бы помочь приложению решить, что, если уж на то пошло, делать со связью. В этом случае все зависит только от приложения.
Независимо от того, какое поведение атрибут xlink:show предлагает, браузер или иное приложение, читающее документ, при активизации связи может делать все, что угодно, в том числе и ничего. Например, браузер, у которого отключена автоматическая загрузка изображений, может решить проигнорировать xlink:show=»embed».
Атрибут xlink:actuate
Атрибут xlink:actuate может принимать одно из следующих значений:
Значение onRequest указывает, что связь должна обходиться только тогда, когда пользователь запросил ее и если он это сделал. (Это поведение обычной связи HTML.) Например, приведенная ниже связь выполняет переход в книжный магазин FatBrain только в том случае, если пользователь потребует это действие:
С другой стороны, если атрибут xlink:actuate связующего элемента равен onLoad, эта связь прослеживается, как только загружен документ, содержащий эту связь. Например, вы можете установить этот атрибут, равным onLoad, чтобы изображение или другие части внешнего содержания были встроены в связывающий документ. В этом случае пользователю не нужно щелкать мышкой на связи, чтобы проследовать по ней. Такой код мог бы выглядеть следующим образом:
Если значение xlink:actuate равно other, то приложение должно искать в документе другую разметку, не описанную с помощью XLink, чтобы решить, когда обходить эту связь. Например, браузер мог бы определить элемент PRELOAD, как указание на то, что на этой странице документ или изображение пока не применяются, но скоро, вероятно, будут использоваться.
Следовательно, если браузер располагает дополнительной доступной пропускной способностью, он должен, пока пользователь читает эту страницу, загрузить документ и кэшировать его. В противном случае, приложение будет ожидать, пока пользователь не активизирует связь.
Приложения, которые не распознают элемент PRELOAD, будут просто игнорировать его. (Необходимо помнить, что это исключительно теоретический пример!)
Наконец, присвоение атрибуту xlink:actuate значения none, означает, что приложение будет самостоятельно решать, обходить ли и, если да, то когда обходить эту связь.
Описание удаленного ресурса
Связующий элемент также включает факультативные атрибуты xlink:role и xlink:title, которые описывают удаленный ресурс: документ или другой ресурс, на который указывает эта связь. Атрибут xlink:title содержит простой текст, который характеризует этот ресурс. Атрибут xlink:role содержит URI, указывающий на документ, который более подробно описывает ресурс. Например, атрибут xlink:title может определять, что страница делает, а атрибут xlink:role может указывать на справочную страницу для этой страницы:
Необходимо помнить, что XLink не определяет интерфейса, посредством которого атрибуты xlink:role и xlink:title представляются пользователю. Как и будет ли приложение применять эти атрибуты, целиком и полностью зависит от самого приложения.
SVG предоставляет возможности для структурирования документа посредством специальных элементов, которые позволяют определять и группировать объекты, а также ссылаться на них в дальнейшем. Они упрощают повторное использование кода, сохраняя его чистым и читаемым. В данной статье будут рассмотрены эти элементы, а также их различия и преимущества.
Группировка с использованием элемента
Элемент используется для логической группировки набора связанных графических элементов. Это можно сравнить с группировкой объектов в графических редакторах.
В качестве примера будем использовать нарисованную в SVG птичку. Она состоит из нескольких отдельных фигур, описываемых кругами и путями. [По невыясненным причинам автором описаны круги путями вместо использования circle, хоть и было обещано использовать круги. Не спрашивайте почему. Я это исправил. Не спрашивайте зачем. — Пер.]
Допустим, вы рисуете такую птичку в Illustrator. Если нужно переместить ее из одного места в другое, то группировка объектов упрощает эту задачу, так как позволяет не перемещать каждый элемент по отдельности. Группировка в SVG делает примерно то же самое. В примере выше мы помимо общей группы для всей птички (id=»bird») выделили также подгруппы, определяющие отдельно голову и тело (id=»body», ).
Если вы измените цвет заливки группы #body, изменится заливка всех элементов внутри группы. Это может быть очень удобно. [Речь об элементах, у которых цвет заливки не задан явно. Например, в том же #body элемент #wing имеет свой цвет. — Пер.]
Группировка элементов может быть очень полезна не только для организации и структурирования документа. Особую пользу она может принести, если вы захотите добавить к SVG-графике интерактивности или задать какие-то преобразования. Сгруппировав элементы, можно перемещать их, масштабировать или поворачивать все вместе, сохраняя их положение друг относительно друга.
Так, в случае со сгруппированной птицей можно отмасштабировать ее всего одной строкой CSS:
Повторное использование элементов с помощью
При работе с графикой часто можно встретить ситуацию, когда применяются повторяющиеся элементы. В графических редакторах в этом случае обычно используется метод копировать-вставить, что удобнее создания элемента с нуля.
Элемент принимает в качестве атрибутов координаты x и y, высоту (height), ширину (width) и ссылку на исходный элемент (xlink:href). В качестве ссылки выступает идентификатор объекта.
Например, если мы хотим добавить еще одну птичку, вместо копирования ее кода можно использовать тег :
Пример на codepen
Обратите внимание, что в атрибуте xlink:href вы можете ссылаться на любой SVG-элемент, даже находящийся во внешнем файле. Это очень удобно использовать для организации (например, можно иметь файл с повторно используемыми компонентами) или для кэширования часто используемых файлов.
Допустим, наша птичка была создана в отдельном файле animals.svg. В этом случае ссылаться на нее можно так:
Нужно учитывать, что ссылки на внешние SVG в не работают в большинстве версий IE (до IE 11). Рекомендую ознакомиться со статьей от Chris Coyier, в коей рассказывается об обходе этого ограничения.
Самые внимательные читатели наверняка заметили, что координаты, задаваемые элементу отсчитываются не от начала координат всего SVG-изображения. На самом деле это сокращенная форма записи атрибута transform. Следующие две строчки являются эквивалентными:
Проще говоря, координаты элемента задаются относительно исходного элемента. Такое поведение не всегда оптимально и может быть недостатком.
Другим недостатком является то, что копии будут использовать те же стили, что и исходный элемент. При применении стилей или преобразований к группе #bird эти стили и преобразования будут распространяться на все ее копии.
[При этом принцип работы системы координат может показаться несколько неожиданным. Она также масштабируется. Если исходный элемент был спозиционирован в 100 пикселях от края изображения, то такая его копия будет расположена в 50 пикселях от края. На задаваемые x и y это тоже распространяется. Таким образом, слова о расположении копии относительно исходного элемента не совсем верны. — Пер.]
В отличие от преобразований, переопределить стили копии нельзя. Таким образом, если вы захотите создать армию птичек разного цвета, то использовать для этого не получится (если только исходный элемент не определен внутри без своих стилей, но об этом в следующем разделе).
Повторное использование хранимых элементов с помощью
Элемент может использоваться для хранения содержимого, которое не будет отображаться при определении. Содержимое в нем хранится в скрытом виде и ждет своего часа, когда оно будет использовано и отображено другими элементами SVG, что делает его идеальным, например, для использования в узорах.
Храниться в может что угодно, начиная с группы элементов, вроде нашей птички, и заканчивая маской или градиентом. Это шаблон для дальнейшего использования. Сам по себе он никогда не отображается, только использующие его сущности.
Ниже приведен пример, в котором градиент сначала определяется, а затем используется для заливки прямоугольника:
[Автором допущена досадная ошибка: не были указаны высота и ширина прямоугольника. — Пер.]
Определение линейного градиента внутри гарантирует, что он не будет внезапно отображен сам по себе, только при использовании где-либо.
[К сожалению, код был сокращен автором, потеряв большую часть листьев. То, что осталось, напоминает мне часть какого-то инопланетного индустриального пейзажа. — Пер.]
В качестве примера нарисуем мини-лес.
Как вы можете видеть, каждое дерево расположено относительно начала координат, за которое в данном случае берется левый верхний угол изображения. Деревья располагаются независимо друг от друга и от расположения в шаблоне.
Обратите внимание, что элементы внутри не отображаются, то есть ведут себя точно так же, как элемент с установленным свойством display=»none». Тем не менее, потомки всегда представлены в исходном дереве [Речь о дереве объектов SVG, полагаю. — Пер.], и на них всегда могут сослаться другие элементы. Таким образом, значение свойства display элемента (или его потомков) не мешает другим элементам ссылаться на него, даже если это свойство установлено в none.
Группировка элементов с использованием
Мною уже написана обширная статья про viewport, viewBox и preserveAspectRatio. Можете с ней ознакомиться: Understanding SVG Coordinate Systems and Transformations (Part 1) – The viewport, viewBox, and preserveAspectRatio.
Заключение
Все эти элементы являются структурными контейнерами SVG, позволяющими облегчить повторное использование элементов, делая при этом код чище и понятнее. Каждый из этих элементов имеет свою сферу применения. Теперь, зная, что каждый из них делает и чем они отличаются друг от друга, вы сможете решить, какой из них использовать в зависимости от ситуации.
Надеюсь, вам понравилась статья, и вы нашли ее полезной. Спасибо за чтение!
От переводчика
Перевод местами достаточно вольный, но не в ущерб смыслу или содержанию. Все, что не относится напрямую к оригиналу, вынесено в примечания. По коду местами делал небольшие правки, но это либо совсем некритично, либо отмечено в примечаниях.
С предложениями, пожеланиями и замечаниями, как обычно, в ЛС.
Связи в XML: XLink (часть 1)
Введение
Что такое XLink?
Непременное условие успеха технологии Web лежит в ее способности связывать ресурсы. То, что «Всемирная паутина» опирается на признанный гоферовский протокол, может быть объяснено хотя бы тем, что HTML позволяет вставлять в документы ссылки гипертекста. С их помощью можно помещать изображения на страницы документов, а также переходить от одного документа к другому или же от одной его части к другой. С учетом того, что XML может быть преобразован в HTML для последующего просмотра, синтаксис, который, используется в HTML для задания связей, может быть перенесен и в XML.
Однако, связывание в HTML имеет ряд ограничений. Универсальные локаторы ресурсов (URL) указывают только на один документ. Большая глубина детализации, например, третье предложение в семнадцатом параграфе, невозможно, если, конечно, в рассматриваемом документе заранее не расставлены поименованные указатели (anchor). Но для этого необходимо иметь доступ к документу, на который требуется указывать.
Связывание в XML состоит из двух частей: XLink и XPointers. XLink (XML Linking Language, Расширяемый язык соединений) определяет, как один документ связывается с другим. XPointers (XML Pointer Language, Расширяемый язык указателей) описывает, как общаются отдельные части документов. XLink указывает на универсальный локатор ресурса (URI), который устанавливает отдельный ресурс.
Вводный пример
Постановка задачи
Предположим, что вы хотите выразить на XML отношение между художником и окружающей его обстановкой. Это подразумевает создание связей между этим творческим работником и его наследием, а также задание связи к описанию исторических событий, имевших место на протяжении его жизни. Данные о художнике могут быть записаны в следующем файле:
Помимо этого, в отдельные файлы включаются описания периодов, на которые можно условно разбить его творчество:
Выполнение поставленного выше задания (то есть создание файла, который устанавливает связь между художником и его творческим наследием и этапами творческого пути) является задачей, которую невозможно решить с помощью «HTML-ных» тегов и атрибутов «img». Это объясняется целым рядом причин:
Отдельный художник оставил после себя не одно «наследие» (такие связи направляются от одного ресурса к нескольким).
Творческий путь отдельного художника распадается на несколько этапов.
Сама ссылка должна быть семантически значимой. (Творческое наследие не есть то же самое, что и характеристика определенного периода, и мы хотим выразить в нашем документе это различие!)
Решение с помощью XLink
После того, как мы объявили расширенную связь, необходимо указать задействованные ресурсы. Поскольку информация о художнике и его жизни хранится вне нашего документа (и, следовательно, мы не можем ею управлять), чтобы ссылаться на нее, воспользуемся элементами XLink, атрибуты которых имеют значение locator. Напомним еще раз, что подход заключается не в задании имени тега, а в том, чтобы с помощью атрибутов XLink позволить помечать элементы как элементы типа locator:
В этом примере упущен только один момент: необходимо указать, как ресурсы относятся друг к другу. Для этого используются атрибуты, значения которых равны arc:
Нетрудно видеть, что использование XLink позволяет упростить нашу задачу и свести ее к созданию файла XML, содержащего элементы, подобные приведенным выше, где ясно и четко указаны все ресурсы и их отношения. Перейдем теперь к детальному рассмотрению механизма связывания XLink: атрибутов, их значений и правил их использования.
Связующие элементы
Атрибут xlink:type
Как было указано выше, с помощью атрибута XLink xlink:type используемые элементы могут быть определены как связующие. Этот атрибут может иметь одно из следующих значений:
simple : простая связь;
extended : расширенная, возможно, многоресурсная связь;
locator : указатель на внешний ресурс;
resource : внутренний ресурс;
arc : правило обхода между ресурсами;
title : описательный заголовок для другого связующего элемента;
none : элемент не имеет смысла, определяемого XLink.
Префикс xlink должен быть привязан к универсальному идентификатору ресурса (URI) пространства имен http://www.w3.org/1999/xlink:
Как обычно, этот префикс может меняться, при условии, что URI остается прежним. Префикс xlink является привычным и должен использоваться, если у вас нет действительно веских причин, чтобы его изменить.
Глобальные атрибуты
Помимо указанного атрибута type XLink предоставляет ряд атрибутов, называемых глобальными, которые позволяют установить, является ли рассматриваемый элемент связующим, а также определить многие его свойства (например, когда загружать связанные ресурсы, как их увидеть, если они загружены, и так далее). В приведенной ниже таблице перечислены глобальные атрибуты, поддерживаемые XLink:
Таблица 1. Глобальные атрибуты
Атрибут определения типа | type |
Атрибут локатор | href |
Семантический атрибут | role, arcrole, title |
Атрибут поведения | show, actuate |
Атрибут обхода | label, from, to |
Отношение элемента к определенному типу XLink накладывает на использование элементов следующие ограничения:
Для элемента данного типа только элементы определенных типов являются релевантными как подэлементы Xlink:
Для элемента данного типа используются только некоторые атрибуты Xlink:
Таблица 2. Правила использования атрибутов (в соответствии с рекомендацией консорциума W3C)
Атрибут | simple | extended | locator | arc | resource | title |
type | R | R | R | R | R | R |
href | O | R | ||||
role | O | O | O | O | ||
arcrole | O | O | ||||
title | O | O | O | O | O | |
show | O | O | ||||
actuate | O | O | ||||
label | O | O | ||||
from | O | |||||
to | O |
В таблице 3 показано, для каких элементов XLink какие подэлементы XLink являются допустимыми.
Таблица 3. Значимые типы потомка (в соответствии с рекомендацией консорциума W3C)
Тип предка | Значимые типы элемента потомка |
simple | — |
extended | locator, arc, resource, title |
locator | title |
arc | title |
resource | — |
title | — |
Простые связи
Рассмотрим следующий пример:
beand/. Этот связующий элемент описывает соединение элемента COMPOSER текущего документа, содержание которого «Beth Anderson», с удаленным документом в http://www.users.interport.net/
beand/. Если бы мы включили этот элемент в документ XML и загрузили его в Web-браузер, поддерживающий XLink, как, например, Mozilla or Netscape 6, браузер подчеркнул бы эту связь, окрасив ее в синий цвет, и при нажатии на нее открыл страницу http://www.users.interport.net/
Однако, данную ссылку можно интерпретировать более абстрактно: как просто определение однонаправленного соединения от одного ресурса, элемента COMPOSER, к другому ресурсу, Web-странице в http://www.users.interport.net/
Рисунок 1. Простая связь
Следующий подраздел посвящен этим двум атрибутам: xlink:actuate и xlink:show.
Связи поведения
Как было сказано выше, связующие элементы могут включать два факультативных атрибута, которые предоставляют приложениям информацию о том, как связь ведет себя при активизации.
Атрибут xlink:show рекомендует, как следует отображать содержание, когда связь активизирована, например, должно ли открываться новое окно, чтобы показать адресуемое содержание, либо это содержание должно загружаеться непосредственно в текущее окно.
Атрибут xlink:actuate позволяет определить, когда активизировать связь, например, сразу после загрузки документа или исключительно после запроса пользователя.
Важно отметить, что хотя указанные поведения являются независимыми от приложений, программы могут игнорировать рекомендации этих атрибутов.
Атрибут xlink:show
Атрибут xlink:show может принимать одно из следующих значений:
Если значение xlink:show равно replace, то при активизации связи (как правило, посредством щелчка мышкой по этой связи, по крайней мере, в GUI-браузерах) адресат связи заменяет текущий документ в том же самом окне. (Это поведение является действием по умолчанию для связей HTML.) Например:
Если значение xlink:show равно new, то активизация связи вызывает открытие нового окна, в котором отображается адресуемый ресурс. Это похоже на поведение связей HTML, когда атрибуту target присвоено значение blank. Например:
Если значение xlink:show равно other, то предполагается, что приложение будет искать другую разметку в документе, которая объяснит, что делать. Как правило, это могло бы использоваться, чтобы отдельное приложение XML использовало другие, отличные от XLink элементы для описания поведения связи. Например, у многих Web-страниц в заголовке находится элемент LINK, который указывает таблицу стилей (style sheet) и может выглядеть следующим образом:
Это связь, но то, что находится в ее конце, не заменяет текущий документ, не встраивается в него и не отображается в новом окне. Для XML-документов вы могли бы условиться, что такое поведение предполагается всякий раз, как встречается элемент STYLESHEET. Поскольку это поведение не является ни одним из трех предопределенных поведений связей, необходимо присвоить xlink:show значение other.
Наконец, атрибуту xlink:show может быть присвоено значение none, чтобы показать, что документ не содержит никакой информации, которая могла бы помочь приложению решить, что, если уж на то пошло, делать со связью. В этом случае все зависит только от приложения.
Независимо от того, какое поведение атрибут xlink:show предлагает, браузер или иное приложение, читающее документ, при активизации связи может делать все, что угодно, в том числе и ничего. Например, браузер, у которого отключена автоматическая загрузка изображений, может решить проигнорировать xlink:show=»embed».
Атрибут xlink:actuate
Атрибут xlink:actuate может принимать одно из следующих значений:
Значение onRequest указывает, что связь должна обходиться только тогда, когда пользователь запросил ее и если он это сделал. (Это поведение обычной связи HTML.) Например, приведенная ниже связь выполняет переход в книжный магазин FatBrain только в том случае, если пользователь потребует это действие:
С другой стороны, если атрибут xlink:actuate связующего элемента равен onLoad, эта связь прослеживается, как только загружен документ, содержащий эту связь. Например, вы можете установить этот атрибут, равным onLoad, чтобы изображение или другие части внешнего содержания были встроены в связывающий документ. В этом случае пользователю не нужно щелкать мышкой на связи, чтобы проследовать по ней. Такой код мог бы выглядеть следующим образом:
Если значение xlink:actuate равно other, то приложение должно искать в документе другую разметку, не описанную с помощью XLink, чтобы решить, когда обходить эту связь. Например, браузер мог бы определить элемент PRELOAD, как указание на то, что на этой странице документ или изображение пока не применяются, но скоро, вероятно, будут использоваться.
Следовательно, если браузер располагает дополнительной доступной пропускной способностью, он должен, пока пользователь читает эту страницу, загрузить документ и кэшировать его. В противном случае, приложение будет ожидать, пока пользователь не активизирует связь.
Приложения, которые не распознают элемент PRELOAD, будут просто игнорировать его. (Необходимо помнить, что это исключительно теоретический пример!)
Наконец, присвоение атрибуту xlink:actuate значения none, означает, что приложение будет самостоятельно решать, обходить ли и, если да, то когда обходить эту связь.
Описание удаленного ресурса
Связующий элемент также включает факультативные атрибуты xlink:role и xlink:title, которые описывают удаленный ресурс: документ или другой ресурс, на который указывает эта связь. Атрибут xlink:title содержит простой текст, который характеризует этот ресурс. Атрибут xlink:role содержит URI, указывающий на документ, который более подробно описывает ресурс. Например, атрибут xlink:title может определять, что страница делает, а атрибут xlink:role может указывать на справочную страницу для этой страницы:
Необходимо помнить, что XLink не определяет интерфейса, посредством которого атрибуты xlink:role и xlink:title представляются пользователю. Как и будет ли приложение применять эти атрибуты, целиком и полностью зависит от самого приложения.