XML+XSLT при разработке сайта RSSNews часть 1

среда, 26 декабря 2007 г. | Ярлыки: , , | |

Когда в воздухе витала идея создания сайта rssnews.org.ua первым делом надо было выбрать базовые методы разработки данного сайта. В тот момент как раз начал делать первые применения технологии XML, XSLT на работе, и мне показалось что данная связка будет наиболее удачной для данного проекта. Ведь если подумать RSS ленты это в принципе XML который только следует привести к нужному виду в XHTML.

Организовывать хранилище лент было решено в XML файле, так как планировался небольшой обьем и простая организация данных. Таким образом получил структуру XML (База лент) -> XSLT -> XHTML
Тоесть в рузультате обработки базы одним XSLT файлом получим готовый сайт. Заманчиво ? Мне именно так и показалось.

Создал простенький PHP файлик в котором было только несколько вещей, а именно:

  1. Выполнение XSL трансформации
  2. Открытие удаленной ленты. Обработка случаев, когда удаленная RSS лента не доступна + кеширование + проверка валидности RSS ленты.
  3. Передача параметров XSL трансформации (ведь единственный XSL файл должен знать показывать папку или предпросмотр ленты)
Идем дальше в наши дебри :) Рассмотрим процесс когда пользователь открывает папку к примеру /news/ php передает в XSLT параметры что нужно вывести рубрику. XSL файл выбирает из базы раздел с именем news проходится по лентам которые есть внутри и выводит их списком расставляя по пути нужные ссылки на конечные ленты. Вывод меню справа делается вообще просто, берем из XML файла, список рубрик, считаем сколько узлов внутри и выводим список с количеством лент рядышком. Красота! Ну и конечно же не забываем выделить текущую рубрику в менюшке. Список лент показали, меню тоже, страница фактически готова ;) Все получается очень просто - берем файл, обрабатываем его в соответствиями с условиями и ТУТ ЖЕ выводим. Буквально несколько десятков строк и мертвый XML файл базы оживает и уже есть по чему щелкать и что смотреть.
А что же происходит если мы нажимаем на просмотр ленты ? Собственно следующее ... XSLT вызывает php функцию которая решает скачивать ли ленту или показать из кеша. И возвращает DOM обьект на базе RSS ленты которую мы собираемся смотреть. Проходимся по узлам RSS ленты и выводим их, тоесть за один проход. Ставим ссылочки на ленты источника, выводим текст, смотрим есть ли еще какая-то дополнительная информация для выводи и при необходимости тоже ее выводим. Ну и не забываем подсветить в менюшке в каком разделе мы находимся. В принципе вот и все ;) Если бы мне рассказали что если все делается именно так, я бы не поверил, но это правда. Разработка становится простой и приятной, данные есть нужно только вывести никаких тебе запросов к БД, они заменены простым выражением XPATH. Честно сказать верстка самого дизайна заняла больше времени чем написание основы на которой все это должно вертеться.
Если вы спросите о скорости работы сайта, то честно признаюсь теста показали около 30-35 запросов в секунду. Кто-то скажет мало, но когда узнают что на сайте нет БД, то удивляются и говорят что неплохо.

Ну и напоследок, хотите посмотреть живые исходники сайта ? Точнее сказать тот файл который все выводит - можете посмотреть, а если вам и показалось что много всего написано, то учтите что процентов 30 написаного там - просто HTML ;)

0 коммент.: