
- •Лекция 4-05
- •Раздел 5. Обработка документов xml
- •Тема 5.1. Вспомогательные языки xml
- •Раздел 5. Обработка документовXml Тема 5.1. Вспомогательные языки xml
- •5.1.1. Язык xPath
- •5.1.1.1. Назначение и спецификации языка xPath
- •5.1.1.2. Типы данных в языках xPath и xQuery
- •5.1.1.3. ВыраженияXPath
- •5.1.1.3.1. Переменные и литералы
- •5.1.1.3.2. Числовые выражения
- •5.1.1.3.3. Выражения отношения
- •5.1.1.3.4. Булевские выражения
- •5.1.1.3.5. Выражения для типов последовательности
- •5.1.1.3.6. Условные выражения
- •5.1.1.3.7. Последовательности
- •5.1.1.3.8. Циклы
- •5.1.1.3.9. Квантификаторы
- •5.1.1.3.10. Выражения для последовательностей узлов
- •5.1.1.3.11. Приоритет операций
- •5.1.1.4. ФункцииXPathи xQuery
- •5.1.1.4.1. Функции-конструкторы
- •5.1.1.4.2. Числовые операторы и функции
- •5.1.1.4.3. Строковые функции
- •5.1.1.4.3.1. Функции сборки-разборки строк
- •5.1.1.4.3.2. Функции сравнения строк
- •5.1.1.4.3.3. Функции строковых значений
- •5.1.1.4.3.4. Функции поиска соответствия в строках
- •5.1.1.4.3.5. Функции с использованием регулярных выражений
- •5.1.1.4.4. Булевские функции и операторы
- •5.1.1.4.5. Функции и операторы для продолжительности, дат и времени
- •5.1.1.4.5.1. Операторы сравнения
- •5.1.1.4.5.2. Функции извлечения компонент
- •5.1.1.4.5.3. Арифметические операторы для продолжительности, дат и времени
- •5.1.1.4.6. Функции для узлов
- •5.1.1.4.7. Функции и операторы для последовательностей
- •5.1.1.4.7.1. Общие функции и операторы
- •5.1.1.4.7.2. Функции проверки количества элементов в последовательности
- •5.1.1.4.7.3. Функции и операторы для операций с множествами
- •5.1.1.4.7.4. Агрегатные функции
- •5.1.1.4.7.5. Операторы и функции, генерирующие последовательности
- •5.1.1.4.8. Контекстные функции
- •5.1.1.5. Выражения пути в xPath
- •5.1.1.5.1. Синтаксис выражений пути
- •5.1.1.5.2. Шаги с использованием оси поиска
- •5.1.1.5.2.2. Проверка узла
- •5.1.1.5.2.3. Предикаты
- •5.1.1.5.2.4. Сокращенный синтаксис выражений с использованием путей поиска
- •5.1.1.5.3. Шаги с использованием фильтров
- •5.1.2. Язык xQuery
- •5.1.2.1. Структура запроса xQuery
- •5.1.2.1.1. Главный модуль
- •5.1.2.1.1.1. Объявления параметров настройки
- •5.1.2.1.1.2. Объявления переменных
- •5.1.2.1.1.3. Объявления функций
- •5.1.2.1.1.4. Объявления опций
- •5.1.2.1.1.5. Операторы импорта
- •5.1.2.1.1.6. Объявления пространства имен
- •5.1.2.1.2. Библиотечный модуль
- •5.1.2.1.3. Комментарии
- •5.1.2.2. КонструкторыXQuery
- •5.1.2.2.1. Прямой конструктор
- •5.1.2.2.2. Вычисляемый конструктор
- •5.1.2.2.2.1. Вычисляемые конструкторы элемента и атрибута
- •5.1.2.2.2.2. Вычисляемый конструктор документа
- •5.1.2.2.2.3. Вычисляемый конструктор текстового узла
- •5.1.2.2.2.4. Вычисляемый конструктор комментария
- •5.1.2.2.2.5. Вычисляемый конструктор инструкции по обработке
- •5.1.2.3. Выражения flwor
- •5.1.2.3.1. Операторыfor,letиreturn
- •5.1.2.3.2. Операторwhere
- •5.1.2.3.3. Операторorderby
- •5.1.3. ЯзыкXLink
- •5.1.3.1. Глобальные атрибуты языкаXLink
- •5.1.3.2. Простые ссылки
- •5.1.3.3. Расширенные ссылки
- •5.1.3.4. Внешние ссылки
- •5.1.3.5. Задание базовогоUrIдля документаXml
5.1.3.4. Внешние ссылки
Рассмотренные выше простые и расширенные ссылки называются встроенными, поскольку они содержатся в самом документе XML. ВXLinkопределены такжевнешние ссылки, т.е. ссылки определенные во внешнем документеXML(аналогично внешним таблицам стилям и сценариям вHTML). Внешние ссылки могут быть только расширенными ссылками.
Для того, чтобы указать, что ссылка является внешней надо в элементе типа "arc"в атрибутеxlink:arcroleзадать значение
xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase",
а в атрибуте задать ссылку на документ XML, содержащий внешние ссылки.
Пример внешней ссылки:
Определение DTDдля элементаexternal-link, описывающего загрузку внешней ссылки, может иметь следующий вид:
<!ELEMENT external-link ((startrsrc|linkbase|load)*)>
<!ATTLIST external-link
xlink:type (extended) #FIXED "extended">
<!ELEMENT startrsrc EMPTY>
<!ATTLIST startrsrc
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT linkbase EMPTY>
<!ATTLIST linkbase
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT load EMPTY>
<!ATTLIST load
xlink:type (arc) #FIXED "arc"
xlink:arcrole CDATA #FIXED
"http://www.w3.org/1999/xlink/properties/linkbase"
xlink:actuate (onLoad|onRequest|other|none) #IMPLIED
xlink:from NMTOKEN #IMPLIED
xlink:to NMTOKEN #IMPLIED>.
Элемент в документе XML, соответствующий этомуDTDможет иметь следующий вид (внешние ссылки размещены в документеlinkbase.xml):
<external-link>
<startrsrc xlink:label="spec" xlink:href="spec.xml" />
<linkbase xlink:label="linkbase"
xlink:href="linkbase.xml" />
<load xlink:from="spec" xlink:to="linkbase"
actuate="onLoad" />
</external-link>.
5.1.3.5. Задание базовогоUrIдля документаXml
Адрес ресурса URIв атрибутах xlink:href,xlink:role и xlink:arcrole можно задавать как в абсолютной форме (указывая полный путь к данному ресурсу), так и в относительной форме (относительно базового каталога). По умолчанию, базовым каталогом считается текущий каталог. В документеXMLможно явно указать базовый каталог с помощью атрибутаxml:base, определенного в спецификацииXMLBase, принятой в 2001 году. Этот атрибут может быть задан в любом элементе документаXML.
Пример использования атрибута xml:base:
<?xml version="1.0"?>
<doc xml:base="http://example.org/today/"
xmlns:xlink="http://www.w3.org/1999/xlink">
<head>
<title>Виртуальная библиотека</title>
</head>
<body>
<paragraph>Просмотр <link xlink:type="simple"
xlink:href="new.xml">новых поступлений</link>!
</paragraph>
<paragraph>Новые поступления!</paragraph>
<olist xml:base="/hotpicks/">
<item>
<link xlink:type="simple"
xlink:href="pick1.xml">Поступление 1</link>
</item>
<item>
<link xlink:type="simple"
xlink:href="pick2.xml">Поступление 2</link>
</item>
</olist>
</body>
</doc>.
Здесь в элементе docопределяется базовый каталог для всего документаXML, а в элементеolist– определяется базовый каталог для этого элемента относительно базового каталога всего документа.
Файл: