
Технология XSLT как способ визуализации данных в веб-приложениях на PHP
Накоплен некоторый опыт использования XSLT-технологии в качестве средства визуализации данных в web-приложениях.
Плюсы:
- Имеется стандартный механизм сопряжения невизуализированных данных с желаемым их представлением. (пресловутое и вожделенное разделение дизайна и кода). В отличие от имеющихся «шаблонных движков», где используется зачастую каждый раз какая-то «своя» логика визуализирования, XSLT предоставляет достаточный набор стандартизованных инструментов.
- Применительно к PHP: собственно XSLT-преобразование осуществляется быстрее, так как используется скомпилированный модуль, в отличие от интерпретируемых Шаблонизаторов.
На этом плюсы исчерпаны. Но, на мой взгляд, в данном случае важно не количество плюсов, а наличие однозначного механизма визуализации.
Минусы:
- В рамках PHP-приложений XSLT не дает выигрыша в производительности, так как много времени занимает сборка исходного XML-документа.
- Повышенные требования к хостингу: php должен быть собран с поддержкой XSLT, крайне желательно наличие php5 (более качественные модули для работы с XML-технологиями)
Основная беда прозиводительности сайта, внешний вид которого собирается с помощью XSL-преобразований не связана непосредственно с самим XSL-модулем. Преобразование занимает 7–15% времени генерации странички. Основной критический момент — это сборка исходного XML-документа.
Вышесказанное подразумевает самый распространенный способ работы с XSL: один XML документ, один XSLT шаблон. В случаях подгрузки одного документа в другой, будет требоваться дополнительное время на получение исходных данных по HTTP-протоколу, что совсем не быстро.
Как использовался XSL на моих проектах
Система генерации документов строит в ответ на запрос DOMDocument (в терминологии php5) с XML-данными. XSLT-преобразование готовится верстальщиком и хранится в отдельном файле. В случае потребности в дополнительных шаблонах на разных страницах сайта происходит подгрузка теплейтов (их тоже готовит верстальщик) в основной XSL. Для этого предусмотрена специальная операция в системе генерации документов. Ее смысл сводится к тому, что в исходном документе удаляются все <xsl:template/>, имеющие то же имя, что и в подгружаемом шаблоне. после этого все <xsl:template/> подгружаемого файла переносятся в основной. Операция тривиальная, но опять-таки, требует затрат времени.
Пути оптимизации
Пока не придуманы. Приходится жертвовать производительностью в ущерб простоте и скорости разработки сайтов. Оправдано ли это? Я считаю, что оправдано. Тем более, что предусмотреть механизм кэширования (результатов преобразования или результатов сборки документов) — не так уж и сложно.
Комментарии (6)