Языки информационного обмена

Каким образом процессор XSL трансформирует исходный документ


Как уже отмечалось, язык XSLT работает не с синтаксисом документа, а с его моделью. Исходный формат и формат назначения являются приложениями XML и подлежащая структура в обоих случаях представляет собой дерево. Кроме того таблица стилей XSL - это документ XML, и потому она также может быть представлена в виде дерева. Итак, процессоры XSLT работают с тремя деревьями.

Язык XSLT является декларативным, т.е. вы определяете, как должен выглядеть результат, а не как он должен быть трансформирован; именно для выполнения этой работы нужен процессор XSL. Таблица стилей XSL состоит из шаблонов (templates), определяющих, каким образом каждый узел исходного дерева должен быть представлен в дереве результата. Процессор проходит по роще источника, начиная с корня, и ищет соответствующие шаблоны в дереве таблицы стилей. Обнаружив шаблон, он с помощью содержащихся в нем правил записывает абстрактное представление результата в дерево результата. Так он перемещается по документу узел за узлом (это определяется инструкцией XSLT <xsl:apply-template>) и ищет соответствия в таблице стилей. Если соответствующего шаблона не обнаруживается, он переходит к следующему. Можно сказать, что в таком случае он выполняет шаблон по умолчанию, который не приводит к результату на выходе. По завершении работы процессора дерево результата можно транслировать в документ XML, текст, документ HTML или в другую желаемую форму.

Теоретически события должны происходить в описанной последовательности. Однако в методах создания обработчиков XSLT используются различные вариации. Процессоры XSLT можно оптимизировать, а таблицы стилей не обязательно сохранять в виде рощи или древовидной структуры. Тем не менее описанный подход дает общее представление об их поведении.



Содержание раздела