
- •Лекция 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.3. Расширенные ссылки
Расширенные ссылки определяются заданием для атрибута xlink:typeзначения"extended". Расширенная ссылка – это ссылка, которая связывает произвольное число ресурсов, как локальных, так и удаленных. Помимо атрибутаxlink:type, для расширенных ссылок могут быть заданы описанные выше атрибутыxlink:role иxlink:title.
Элементы с атрибутом xlink:type="extended"могут содержать элементы со значениямиxlink:type, равными"locator","arc","resource"и"title".
Элемент со значением xlink:type, равным"title", содержит описание расширенного элемента и не содержит других атрибутов, кромеxlink:type. Может быть задано несколько элементов описания (например, на разных языках).
Элемент со значением xlink:type, равным"locator", определяет удаленный ресурс, участвующий в ссылке. Для этого элемента могут быть также заданы описанные выше атрибутыxlink:href,xlink:roleиxlink:title, а также атрибутxlink:label. Атрибутxlink:hrefявляется обязательным и указываетURIудаленного ресурса, остальные атрибуты являются необязательными.
Атрибут xlink:labelобеспечивает элементу со значениемxlink:type, равным"arc", ссылку для создания дуги перехода.
Элемент, описывающий удаленный ресурс, может содержать элемент описания ресурса (элемент со значением xlink:type, равным"title").
Элемент со значением xlink:type, равным"resource", определяет локальный ресурс, участвующий в ссылке. Для этого элемента могут быть также заданы описанные выше атрибутыxlink:role,xlink:titleиxlink:label.
Элемент со значением xlink:type, равным"arc", определяет правила прохождения ресурсов (дугу). Для этого элемента могут быть также заданы описанные выше атрибутыxlink:arcrole, xlink:title, xlink:show, xlink:actuate, а также атрибуты xlink:from и xlink:to(все атрибуты являются необязательными).
Значениями атрибутов xlink:from и xlink:to, определяющих соответственно начало и окончание дуги перехода, должны быть значения атрибутаxlink:labelв элементах"locator"или"resource".
Элемент, описывающий дугу, может содержать элемент описания ресурса (элемент со значением xlink:type, равным"title").
Пример использования расширенной ссылки в документе XML:
Определение DTDдля элементаextended-link, описывающего расширенную ссылку, может иметь следующий вид:
<!ELEMENT extended-link ((tooltip|person|course|gpa|go)*)>
<!ATTLIST extended-link
xmlns:xlink CDATA #FIXED
"http://www.w3.org/1999/xlink"
xlink:type (extended) #FIXED "extended"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED>
<!ELEMENT tooltip ANY>
<!ATTLIST tooltip
xlink:type (title) #FIXED "title"
xml:lang CDATA #IMPLIED>
<!ELEMENT person EMPTY>
<!ATTLIST person
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT course EMPTY>
<!ATTLIST course
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:role CDATA #FIXED
"http://www.example.com/linkprops/course"
xlink:title CDATA #IMPLIED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT gpa ANY>
<!ATTLIST gpa
xlink:type (resource) #FIXED "resource"
xlink:role CDATA #FIXED
"http://www.example.com/linkprops/gpa"
xlink:title CDATA #IMPLIED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT go EMPTY>
<!ATTLIST go
xlink:type (arc) #FIXED "arc"
xlink:arcrole CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:show (new|replace|embed|other|none) #IMPLIED
xlink:actuate (onLoad|onRequest|other|none) #IMPLIED
xlink:from NMTOKEN #IMPLIED
xlink:to NMTOKEN #IMPLIED>.
Элемент в документе XML, соответствующий этомуDTDможет иметь следующий вид:
<extended-link>
<tooltip>Загрузка курса для Иванова</tooltip>
<person
xlink:href="students/ivanov62.xml"
xlink:label="student62"
xlink:role="http://www.example.com/linkprops/student"
xlink:title="Иванов" />
<person
xlink:href="profs/petrov7.xml"
xlink:label="prof7"
xlink:role="http://www.example.com/linkprops/prof"
xlink:title="Dr. Jay Smith"/>
<!-- Другие удаленные ресурсы для преподавателей и
студентов -->
<course
xlink:href="courses/cs101.xml"
xlink:label="CS-101"
xlink:title="Computer Science 101" />
<!-- Другие удаленные ресурсы для лекций, лабораторных
работ и т.д.-->
<gpa xlink:label="IvanovGPA">3.5</gpa>
<go
xlink:from="student62"
xlink:to="IvanovGPA"
xlink:show="new"
xlink:actuate="onRequest"
xlink:title="Рейтинг Иванова" />
<go
xlink:from="CS-101"
xlink:arcrole="http://www.example.com/links/auditor"
xlink:to="student62"
xlink:show="replace"
xlink:actuate="onRequest"
xlink:title="Проверка Иванова" />
<go
xlink:from="student62"
xlink:arcrole="http://www.example.com/links/advisor"
xlink:to="prof7"
xlink:show="replace"
xlink:actuate="onRequest"
xlink:title="Сидоров, консультант" />
</extended-link>.