XML , XLink и XPointer
XLink используется для создания гиперссылок в документах XML.
|
Поддержка браузера XLink
Браузер не поддерживает XLink в XML-документах.
Однако все основные браузеры поддерживают XLinks в SVG .
Синтаксис XLink
В HTML элемент <a> определяет гиперссылку. Однако это не так, как это работает в XML. В документах XML вы можете использовать любые имена элементов, поэтому браузеры не могут предсказать, какие элементы ссылок будут вызываться в документах XML.
Ниже приведен простой пример использования XLink для создания ссылок в XML-документе:
<?xml version="1.0" encoding="UTF-8"?>
<homepages xmlns:xlink="http://www.w3.org/1999/xlink">
<homepage xlink:type="simple"
xlink:href="https://www.w3schools.com">Visit W3Schools</homepage>
<homepage xlink:type="simple"
xlink:href="http://www.w3.org">Visit W3C</homepage>
</homepages>
Чтобы получить доступ к функциям XLink, мы должны объявить пространство имен XLink. Пространство имен XLink: "http://www.w3.org/1999/xlink".
Атрибуты xlink:type и xlink:href в элементах <homepage> взяты из пространства имен XLink.
xlink:type="simple" создает простую "HTML-подобную" ссылку (означает "нажмите здесь, чтобы перейти туда").
Атрибут xlink:href указывает URL-адрес для ссылки.
Пример XLink
Следующий XML-документ содержит функции XLink:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns:xlink="http://www.w3.org/1999/xlink">
<book title="Harry Potter">
<description
xlink:type="simple"
xlink:href="/images/HPotter.gif"
xlink:show="new">
As his fifth year at Hogwarts School of Witchcraft and
Wizardry approaches, 15-year-old Harry Potter is.......
</description>
</book>
<book title="XQuery Kick Start">
<description
xlink:type="simple"
xlink:href="/images/XQuery.gif"
xlink:show="new">
XQuery Kick Start delivers a concise introduction
to the XQuery standard.......
</description>
</book>
</bookstore>
Объяснение примера:
- Пространство имен XLink объявляется в верхней части документа (xmlns:xlink="http://www.w3.org/1999/xlink").
- xlink:type="simple" создает простую ссылку "HTML-подобную"
- Атрибут xlink:href указывает URL-адрес для ссылки (в данном случае — изображение)
- xlink:show="new" указывает, что ссылка должна открываться в новом окне.
XLink — идем дальше
В приведенном выше примере мы продемонстрировали простые XLink. XLink становится все более интересным при доступе к удаленным расположениям как к ресурсам, а не к отдельным страницам.
Если мы установим значение атрибута xlink:show на «встроить», связанный ресурс должен обрабатываться на странице. Когда вы считаете, что это может быть другой XML-документ, вы можете, например, построить иерархию XML-документов.
Вы также можете указать, КОГДА должен появиться ресурс, с помощью атрибута xlink:actuate.
Справочник по атрибутам XLink
Attribute | Value | Description |
---|---|---|
xlink:actuate | onLoad onRequest other none |
Defines when the linked resource is read and shown:
|
xlink:href | URL | Specifies the URL to link to |
xlink:show | embed new replace other none |
Specifies where to open the link. Default is "replace" |
xlink:type | simple extended locator arc resource title none |
Specifies the type of link |
XPointer
|
Поддержка браузера XPointer
Браузер не поддерживает XPointer. Но XPointer используется и в других языках XML.
Пример XPointer
В этом примере мы будем использовать XPointer в сочетании с XLink, чтобы указать на определенную часть другого документа.
Мы начнем с просмотра целевого XML-документа (документа, на который мы ссылаемся):
<?xml version="1.0" encoding="UTF-8"?>
<dogbreeds>
<dog breed="Rottweiler" id="Rottweiler">
<picture url="https://dog.com/rottweiler.gif" />
<history>The Rottweiler's ancestors were probably Roman
drover dogs.....</history>
<temperament>Confident, bold, alert and imposing, the Rottweiler
is a popular choice for its ability to protect....</temperament>
</dog>
<dog breed="FCRetriever" id="FCRetriever">
<picture url="https://dog.com/fcretriever.gif" />
<history>One of the earliest uses of retrieving dogs was to
help fishermen retrieve fish from the water....</history>
<temperament>The flat-coated retriever is a sweet, exuberant,
lively dog that loves to play and retrieve....</temperament>
</dog>
</dogbreeds>
Обратите внимание, что XML-документ выше использует атрибуты id для каждого элемента!
Таким образом, вместо ссылки на весь документ (как в XLink), XPointer позволяет вам ссылаться на определенные части документа. Чтобы сделать ссылку на определенную часть страницы, добавьте знак номера (#) и выражение XPointer после URL-адреса в атрибуте xlink:href, например: xlink:href="https://dog.com/dogbreeds.xml. #xpointer(id('Ротвейлер'))". Выражение относится к элементу в целевом документе со значением идентификатора «Ротвейлер».
XPointer также позволяет использовать сокращенный метод для ссылки на элемент с идентификатором. Вы можете использовать значение идентификатора напрямую, например: xlink:href="https://dog.com/dogbreeds.xml#Rottweiler".
Следующий XML-документ содержит ссылки на дополнительную информацию о породе каждой из моих собак:
<?xml version="1.0" encoding="UTF-8"?>
<mydogs xmlns:xlink="http://www.w3.org/1999/xlink">
<mydog>
<description>
Anton is my favorite dog. He has won a lot of.....
</description>
<fact xlink:type="simple" xlink:href="https://dog.com/dogbreeds.xml#Rottweiler">
Fact about Rottweiler
</fact>
</mydog>
<mydog>
<description>
Pluto is the sweetest dog on earth......
</description>
<fact xlink:type="simple" xlink:href="https://dog.com/dogbreeds.xml#FCRetriever">
Fact about flat-coated Retriever
</fact>
</mydog>
</mydogs>