XSLT and Web
XSLT (Extensible Stylesheet Language Transformations) — часть спецификации XSL, задающая язык преобразований XML-документов. Спецификация XSLT является рекомендацией W3C.[1]
Обычно XSLT в вебе используется для преобразования XML-документов в XHTML на стороне сервера. В результате получается обычная HTML-ка, которая передается в браузер. Это не интересно и никак не отражает некоторых прелестей XSLT-преобразования.
Работа с XML и, в частности, XSLT-преобразование является стандартной функцией современных браузеров. Почему бы не заюзать преобразования на стороне клиента?
Выглядит, скажем, наша главная страница как
<page title="Главная">
<hello/>
<search/>
<newsblock>
<news date="2009-01-02" link="/page1.xml">Новость</news>
<news date="2009-01-12" link="/page2.xml">Еще новость</news>
</newsblock>
</page>
И уже в браузере формируется в приветствие, блок поиска и блок новостей и оборачивается в оформление сайта.
Такой подход используется, например на сайте starcraft2.com и сайте avalon.com.ru, над которым я время от времени и колдую.
Посмотрим на достоинства и недостатки:
Достоинтсва:
- Разделение данных и представления. Это типа хорошо и этого всегда добиваются
- Снижение нагрузки на сервер. Точнее, на вебовский фронт-энд, так как ему уже не надо по куче шаблонов формировать удобочитаемое представление
- Снижение трафика. Шаблоны достаточно скачать один раз и закешировать. Собственно, тот же эффект, что и от CSS
Недостатки:
- Требуется более высокое качество кода. Корявый HTML коряво отображается. Корявый XML не отображается вообще (на самом деле это достоинство, но моду диктуют “индусы” и другие быдлокодеры)
- Нагрузка на клиента. Современные браузеры на XSLT-страничках заметно подтормаживают, особенно, разумеется, Internet Explorer. Тонкий клиент как бы “толстеет”
- Browser Wars. Стоит просто у валидной XHTML-странички сменить тип с text/html на text/xml, сразу же всплывают какие-то странные несовместимости у браузеров. А, например, открытые реализации KHTML/WebKit (напр, Konqueror и Arora) вообще XSLT не понимают
Непонятки:
- Поисковики. Как поисковики относятся к XSLT? А хз. Требует дополнительного исследования
В целом, снятие нагрузки с интерпретатора на сервере и с моих мозгов перевешивает для меня минусы подхода. В скором будущем напишу подробнее о поддержке браузерами и, если что узнаю, поисковиками