XSLT как способ визуализации

Технология XSLT как способ визуализации данных в веб-приложениях на PHP

Накоплен некоторый опыт использования XSLT-технологии в качестве средства визуализации данных в web-приложениях.

Плюсы:

  1. Имеется стандартный механизм сопряжения невизуализированных данных с желаемым их представлением. (пресловутое и вожделенное разделение дизайна и кода). В отличие от имеющихся «шаблонных движков», где используется зачастую каждый раз какая-то «своя» логика визуализирования, XSLT предоставляет достаточный набор стандартизованных инструментов.
  2. Применительно к PHP: собственно XSLT-преобразование осуществляется быстрее, так как используется скомпилированный модуль, в отличие от интерпретируемых Шаблонизаторов.

На этом плюсы исчерпаны. Но, на мой взгляд, в данном случае важно не количество плюсов, а наличие однозначного механизма визуализации.

Минусы:

  1. В рамках PHP-приложений XSLT не дает выигрыша в производительности, так как много времени занимает сборка исходного XML-документа.
  2. Повышенные требования к хостингу: php должен быть собран с поддержкой XSLT, крайне желательно наличие php5 (более качественные модули для работы с XML-технологиями)

Основная беда прозиводительности сайта, внешний вид которого собирается с помощью XSL-преобразований не связана непосредственно с самим XSL-модулем. Преобразование занимает 7–15% времени генерации странички. Основной критический момент — это сборка исходного XML-документа.

Вышесказанное подразумевает самый распространенный способ работы с XSL: один XML документ, один XSLT шаблон. В случаях подгрузки одного документа в другой, будет требоваться дополнительное время на получение исходных данных по HTTP-протоколу, что совсем не быстро.

Как использовался XSL на моих проектах

Система генерации документов строит в ответ на запрос DOMDocument (в терминологии php5) с XML-данными. XSLT-преобразование готовится верстальщиком и хранится в отдельном файле. В случае потребности в дополнительных шаблонах на разных страницах сайта происходит подгрузка теплейтов (их тоже готовит верстальщик) в основной XSL. Для этого предусмотрена специальная операция в системе генерации документов. Ее смысл сводится к тому, что в исходном документе удаляются все <xsl:template/>, имеющие то же имя, что и в подгружаемом шаблоне. после этого все <xsl:template/> подгружаемого файла переносятся в основной. Операция тривиальная, но опять-таки, требует затрат времени.

Пути оптимизации

Пока не придуманы. Приходится жертвовать производительностью в ущерб простоте и скорости разработки сайтов. Оправдано ли это? Я считаю, что оправдано. Тем более, что предусмотреть механизм кэширования (результатов преобразования или результатов сборки документов) — не так уж и сложно.

Комментарии (6)

mem: 1072 total: 10 module: 4 xsl: 3