В языке XML расширены возможности гиперсвязей, которым посвящены спецификации XLink и XPointer. В XLink описаны связи между документами, в XPointer — связи внутри документа.
В XML возможны как простые связи, подобные HTML гиперссылкам, так и связи многонаправленные, связывающие многие документы, а также связи, встраивающие вызываемый текст в исходный документ или в дополнительное окно.
Структура гипертекста сохраняется при изменении адресов страниц, благодаря использованию промежуточной БД ссылок. Если в системе документов число связей велико, то внесение изменений может потребовать чрезвычайно сложной работы по отысканию и редактированию связей. При наличии базы данных ссылок (linkbase) не нужно отслеживать связи по всему документу, достаточно редактировать эту базу.
Для простановки ссылок применяют атрибут xlink:type. Этот атрибут, указываемый в элементах размеченного документа, может иметь следующие основные значения:
Пример простой связи:
<author xmlns:xlink="http://www.w3.org/1999/xlink"
      xlink:type="simple"
      xlink:href="http://www.library.ru/">
  I.Ivanov
</author>
Здесь в элементе author атрибут xlink:href связывает содержание "I.Ivanov" данного элемента с удаленным документом, находящимся по алресу http://www.library.ru/. Следовательно, I.Ivanov становится гиперссылкой на http://www.library.ru/.
Другой пример:
<item xmlns:xlink="http://www.w3.org/1999/xlink"
      xlink:type="simple"
      xlink:href="unit.xml"> 
  CPU
</item>
В элементе item значение атрибута xlink:href - это относительный URL unit.xml. Этот связующий элемент описывает соединение элемента item текущего документа, содержание которого "CPU", с документом с именем unit.xml, находящимся на том же сервере, в том же каталоге, что и документ, в котором появляется эта связь.
В следующем примере в отличие от предыдущего случая активизация связи происходит автоматически, благодаря атрибуту xlink:actuate="onLoad", а атрибут xlink:show="embed" указывает, что результат будет встроен в текущий документ, а не заменит его:
<IMAGE xmlns:xlink="http://www.w3.org/1999/xlink"
      xlink:type="simple" xlink:href="fig.gif"
      xlink:actuate="onLoad" xlink:show="embed"/>
Атрибуты actuate и show могут иметь также другие значения. Например, значение onRequest атрибута actuate указывает, что связь должна активироваться только при запросе ее выбором ссылки, как это реализовано в обычных связях HTML. Значение атрибута show, равное replace, также приводит к результату, аналогичному с применением HTML, т.е. к замене текущего документа вызываемым. Если значение show равно new, то активизация связи приводит к открытию нового окна, в котором отображается вызываемый ресурс. Если значение show равно other, то приложение будет искать другую разметку, которая должна объяснить, что делать.
Расширенные связи могут быть многонаправленными и внешними, связывающими удаленные и локальные ресурсы.
Локальный ресурс является частью элемента расширенной связи, значение атрибута xlink:type которого равно resource.
Элемент, ссылающийся на удаленный ресурс, может иметь любое имя, но включать атрибут xlink:type, значением которого является locator. Каждый элемент типа locator содержит атрибут xlink:href, значением которого является URI удаленного ресурса.
Сами расширенные связи обозначаются с помощью значения extended атрибута xlink:type:
<device xmlns:xlink="http://www.w3.org/1999/xlink"
       xlink:type="extended">
  <component1 xlink:type="locator"
       xlink:href="http://..."/>
  <component2 xlink:type="locator"
       xlink:href="http://..."/>
При многонаправленных связях возможны различные пути обхода ресурсов. Участки пути, называемые ребрами (arc), представляются с помощью элементов, у которых значение атрибута xlink:type равно arc. Правила обхода указываются добавлением атрибутов xlink:show и xlink:actuate к элементам типа arc.
Для указания направления обхода используются атрибуты to и from. Сами ресурсы помечаются значениями атрибута xlink:label, например, xlink:label="А". Тогда, если атрибут xlink:from равен A, а атрибут xlink:to равен B, то тогда ребро направляется из ресурса, у которого атрибут xlink:label равен A, в ресурс, чей атрибут xlink:label равен B. Например:
<CONNECTION xlink:type="arc" 
      xlink:from="A"
      xlink:to="B"
      xlink:show="replace"
      xlink:actuate="onRequest"/>