Валиков Алексей Н.
Шрифт:
Рис. 3.24. Результат обработки элемента
Пунктиром выделены результирующие фрагменты деревьев, сгенерированные при обработке элементов
Этот результат, в свою очередь, используется в главном шаблоне — шаблоне, который обрабатывает корневой элемент:
Сгенерированный при обработке элемента
Рис. 3.25. Результат обработки корневого узла
Пунктиром выделен результирующий фрагмент дерева, который был получен при обработке элемента
Результирующий фрагмент дерева, полученный в результате обработки корневого узла, является деревом выходящего документа. В чистом XSLT это и есть результат выполнения преобразования. Для того чтобы получить физическую интерпретацию — в данном случае HTML-документ, дерево сериализуется, обращаясь в следующий выходящий документ.
Надо сказать, что спецификация языка XSLT не оговаривает, в каком именно порядке процессоры должны выполнять шаблонные правила — главное, чтобы результат преобразования совпадал с результатом, полученным при обработке приведенным выше способом. На практике это означает, что разработчикам совершенно необязательно знать, как именно конкретный процессор применяет правила — достаточно понимать принципы шаблонной обработки. В этом одно из главных достоинств XSLT как языка, не имеющего побочных эффектов.
Глава 4
Структура преобразования
Пространство имен XSLT
Для того чтобы выделить элементы и атрибуты, которые принадлежат логической схеме XSLT, в этом языке применяется механизм пространств имен. Это означает, что в документе преобразования элементы, относящиеся к XSLT, должны принадлежать его пространству имен.
Уникальный идентификатор ресурса пространства имен XSLT имеет вид
Как отмечалось ранее, по адресу, указанному в URI пространства имен, совершенно необязательно будет находиться что-либо осмысленное. Однако в нашем случае по адресу
Символ
Общепринятым префиксом пространства имен языка XSLT является префикс
Приведем пример простого преобразования, в котором объявлено пространство имен XSLT.