Используем XML и XSLT в качестве модели данных и шаблонов отображения
Сегодня хотел бы еще раз заострить внимание на XML и XSLT технологиях, используемых в разработках Web проектов.
Почему я сделал упор именно на эти технологии:
- Поддержка мега-вендорами, такими как Microsoft, Oracle, и т.д.
- Неограниченное количество степеней свободы данных (XML), т.е. данные могут быть представленны не в строгом «табличном» формате или в виде вложенности массивов
- Легкая интеграция с другими решениями
- Всегда правильный и валидный HTML на выходе
- Удобные конструкции
- Высокая производительность обработки шаблонов в отличие от того ;е SMARTY
Если почти все пункты заявления можно оспорить, но на пункте 3 я хотел бы заострить особое внимание, т.к. именно этот пункт явился для меня той «фишкой», которая побудила меня полностью забыть о SMARTY.
Зачала которая стояла передо мной в проецссе разработки http://Elab.by — отображение записей блога на страницах сайта. Задача простая и нетривиальная на первый взгляд, но масла в костер подливал тот факт что на момент создания проекта http://blog.elab.by и http://elab.by были разные сервера, поэтому вариант написания функции которая бы доставала бы данные с таблиц WordPress я даже не рассматривал как «конструктивное решение».
Тут меня осинило — в WordPress есть RSS!!! Это же тот же XML только описанный стандартом!
Более того весь сайт Elab.by построен на структуре MySQL->XML+XSLT=HTML
Лаконичное решение напрашивалось само собой: Нам надо просто взять RSS блога и вставить этот кусок в XML сайта, а потом отобразить его с помощью XSLT шаблона. После 15 минут коддинга решение успешно красовалось на сайте!
Основные моменты, на которые стоит обратить внимание при подобном решении:
- Конвертации кодировок XML. Я работаю в кодировке Win1251, данные оттаются в UTF-8 — решается с помощью iconv
- Кеширование данных: не логично каждый раз при заходе нового пользователя дергать данные о блогах с стороннего ресурса. Более того удаленный ресурс может быть недоступен по каким то обстоятельствам. Нас спасет простой алгоритм кеширования
- Как ни крути fopen работает довольно криво с http ресурсами. Более надежный способ — CURL. Настоятельно рекомендую использовать именно его для граббинга данных с сайта.
Вобщем вот и все. Всех секретов я не выдаю в виду того что это комерческая тайна 🙂 Но основные алгоритмы расписаны — вам остается только воплатить их в жизнь!
