Логотип

Документация по макросам и шаблонам UMI.CMS

В общем случае, XSLT-шаблон представляет собой XML-документ, описывающий правила преобразования исходных XML-документов. При применении шаблона строится дерево узлов исходного XML-документа, затем к узлам дерева, начиная с корневого, применяются заданные в шаблоне правила и формируется результирующий документ. Более детально последовательность применения правил шаблонов можно посмотреть, например, здесь: ru.wikipedia.org/wiki/XSLT.

Важным следствием является то, что с помощью XSLT-шаблонов можно получать различные представления одного и того же XML-ресурса.

При использовании XSLT-шаблонизатора UMI.CMS таким исходным XML-документом, подлежащим преобразованию, является внутреннее представление страницы в формате UMI Data (см. далее «Формат UMI Data»). Правила преобразования, в свою очередь, задаются в XSL-файле, назначенном шаблоном в настройках модуля "Структура" для этой страницы.

Рисунок 2.1. Запрос страницы с применением простого xslt-шаблона

Запрос страницы с применением простого xslt-шаблона

Для того, чтобы посмотреть, как именно выглядит страница в формате UMI Data, можно добавить .xml в адресной строке к адресу любой страницы. В этом случае произойдет следующее:

Рисунок 2.2. Запрос страницы в UMI Data

Запрос страницы в UMI Data

В применяемом шаблоне часто могут встречаться какие-либо вызовы дополнительных данных по внутренним протоколам UMI.CMS (полный список происходящих вызовов можно получить одним запросом — см. «Отладка и тестирование XSLT-шаблонов»). Все эти вызовы возвращают результаты в виде XML-данных и, соответственно, также могут быть обработаны и включены в результирующий документ:

Рисунок 2.3. Запрос страницы с вызовом дополнительных данных в xslt-шаблоне

Запрос страницы с вызовом дополнительных данных в xslt-шаблоне

Кроме того, поскольку универсальный XSLT-шаблонизатор, реализованный в UMI.CMS, базируется на архитектурных принципах REST, это позволяет применять его не только для создания оформления HTML-страниц, но и для создания Flash- и Ajax-приложений.