XML - статьи

         

/A>Обзор языка XLink


Язык ссылок XML (XML Linking Language, XLink)- это язык описания межресурсных связей с помощью XML и отдельного пространства имен.

На дизайн языка XLink в значительной степени повлияли следующие стандарты [1]:

1].

  • Язык описания межресурсных связей HyTime, обладающий более богатыми выразительными возможностями, нежели HTML, и позволяющий определять входящие и сторонние ссылки, а также описывать некоторые их семантические свойства.
  • Язык XLink обеспечивает полную функциональность гиперссылок HTML, и гораздо большее [7]: он позволяет устанавливать отношение связи между более чем двумя ресурсами, ассоциировать различные метаданные со ссылками, соединять ресурсы без их модификации [4].

    Хотя ссылки XLink описываются на XML, с их помощью можно соединять не только XML-документы, но и другие виды ресурсов. Понятие ресурса определяется в IETF RFC 2396 как любая адресуемая единица информации или сервиса [8]. Если ресурс представляет собой правильно сформированный (well-formed) XML-документ, то спецификация XLink считает ресурсом также любую часть этого документа, определяемую идентификатором фрагмента на языке указателей XML (XML Pointer Language - XPointer) [9]. Идентификатор фрагмента языка XPointer может дополнять унифицированный идентификатор (URI) XML-документа.

    Относительно конкретной ссылки Спецификация XLink подразделяет все ресурсы на локальные и удаленные. В терминах XLink, локальный ресурс - это элемент XML, который участвует в ссылке за счет того, что ссылочный элемент является для него родительским [10]. Ресурс, который участвует в ссылке благодаря тому, что к нему адресуются с помощью унифицированного идентификатора URI, считается удаленным (remote), даже если он располагается в том же XML-документе, что и ссылка, или даже внутри ссылочного элемента. Заметим, что один и тот же ресурс может быть локальным для одной ссылки XLink и удаленным - для другой.

    Язык XLink вводит два типа ссылок.


    1. Простая ссылка (simple link) - это ссылка, которая ассоциирует в точности два ресурса - один локальный и один удаленный - и определяет семантику перехода от первого ко второму. Предоставляемая простой ссылкой функциональность по связыванию ресурсов является наиболее распространенной (например, в эту же категорию попадают ссылки A и IMG языка HTML). Синтаксис простых ссылок ориентирован на краткость записи, и поэтому у простых ссылок нет какой-либо специальной внутренней структуры.


    Использование простой ссылки иллюстрируется примером, показанным на рис. 1, который будет использоваться в ходе дальнейшего обсуждения в данной статье. Рисунок выражает систему заказа товаров некоторого электронного магазина. Будем считать, что электронный магазин оперирует такими ресурсами, как каталог товаров, информация о клиентах и сделанные клиентами заказы товаров из каталога. Поскольку обозначенные 3 ресурса имеют разнородную структуру, разумно хранить их в виде 3 отдельных XML-документов, каждый из которых показан на рис. 1. Простые ссылки XLink позволяют установить связь каждого конкретного заказа с элементами из каталога, которые были заказаны, и с клиентом, который сделал заказ.

    Рис. 1: Набор связанных с помощью XLink XML-документов, выражающих систему заказа товаров.

    Элемент языка XML, являющийся ссылкой XLink, может носить произвольное имя, а принадлежность элемента к языку XLink и ссылочный тип элемента устанавливаются глобальным атрибутом xlink:type, где префикс xlink связывается с пространством имен, зарезервированным языком XLink. По аналогии с гиперссылками HTML, удаленный ресурс, на который указывает простая ссылка XLink, определяется атрибутом xlink:href. Значением атрибута xlink:href служит Унифицированный Идентификатор URI, возможно, включающий в себя идентификатор фрагмента на языке XPointer - для целевых ресурсов, представляющих собой фрагмент XML-документа.

    В документе "purchase-orders.xml" на рис. 1 простыми ссылками XLink являются элементы языка XML с именами item и customer; первые указывают на элементы каталога, вторые - на клиентов. Идентификация конкретного клиента осуществляется с использованием имеющихся в XML-документе



    "clients.xml" атрибутов типа ID, и при данном способе идентификации может использоваться сокращенный синтаксис XPointer, напоминающий обращение к именованному якорю в HTML. Для идентификации элемента в каталоге (XML-документ "catalogue.xml") используется полный синтаксис XPointer. Из рассматриваемого примера легко видеть, что по сравнению с гиперссылками HTML простые ссылки XLink обладают более гибкими и мощными возможностями по связыванию ресурсов и описанию семантики этих связей.


    1. Расширенная ссылка (extended link) - это ссылка, которая выражает полную функциональность языка XLink. Расширенная ссылка может объединять произвольное количество участвующих в ней ресурсов, и участвующие ресурсы могут быть любой комбинацией локальных и удаленных.


    Использование или следование по ссылке с какой-либо целью называется

    переходом
    (traversal). Несмотря на то, что расширенные ссылки могут соединять произвольное количество ресурсов, переход всегда включает в себя ровно 2 ресурса [1]. Информация о том, как осуществлять переход между парой ресурсов, включающая в себя направление перехода и его семантику, задается при помощи дуги (arc).

    Ввиду того, что расширенная ссылка предоставляет мощные возможности по связыванию ресурсов, структура расширенной ссылки может быть достаточно сложной. В общем случае она включает в себя элементы типа локатор [2], которые указывают на удаленные ресурсы; элементы типа ресурс, содержащие локальные ресурсы; элементы типа дуга, которые определяют дуги и условия перехода по ним.

    Дуга в языке XLink является ориентированной, и 2 ресурса, соединяемые дугой, называются соответственно исходным (starting resource) и

    целевым
    (ending resource) [2]. Дугу называют входящей (inbound), если ее исходный ресурс является удаленным ресурсом, а целевой ресурс - локальным. Дуга называется сторонней (third-party), если ни один из соединяемых ею ресурсов не является локальным. Благодаря наличию в языке XLink входящих и сторонних дуг обеспечивается возможность соединять ресурсы без их модификации.

    Обычно элементы типа "расширенная ссылка'' располагаются отдельно от тех ресурсов, которые они соединяют (например, в совершенно разных документах). Расширенные ссылки важны для ситуаций, когда соединяемые ресурсы доступны только для чтения; или когда модификация этих ресурсов является дорогостоящей и сложной операцией, тогда как модификация отдельно располагающейся ссылки достаточно проста; или когда ресурсы имеют форматы, не поддерживающие встроенные ссылки (как для многих мультимедийных форматов).

    Пример расширенной ссылки будет рассмотрен в разделе 5.

    Хотя простые ссылки концептуально являются подмножеством расширенных ссылок, они синтаксически различны. В частности, простая ссылка определяет дугу неявным образом, и поэтому для преобразования простой ссылки в расширенную ссылку требуется осуществить несколько структурных преобразований.

    Можно говорить о том, что предназначением простой ссылки является удобная короткая форма записи для эквивалентного случая расширенной ссылки [1]. Один элемент вида «простая ссылка» объединяет в себе базовую функциональность элементов типа «расширенная ссылка», «локатор», «дуга» и «ресурс». В том случае, когда реально требуется лишь подмножество свойств этих элементов, простая ссылка удобна как альтернатива расширенной ссылке.


    Содержание раздела