Стояли вчера в падике и пили вино %) и тут я подумал внезапно, почему бы не сделать сборку интерфейсов (считай, xhtml страничек) на основе XML, используя при этом подход, который есть в плагинах для Firefox и других Gecko-приложений.
При написании плагина для FF, если мы хотим изменить каким-то образом окно браузера, например, добавить выпадающее меню в статус-бар, мы пишем специальный XUL файл, который содержит в себе специфическую XUL разметку (XUL - это по-сути XML). Дальше, в файле chrome.manifest указываем:
overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul
Это означает, что мы просим объединить 2 файла: наш XUL-файл и дефолтный XUL-файл браузера. Преимущество такого подхода в том, что XML всегда валидный и его легко объединить с другим XML’ем (при помощи XSLT).
Прикиньте, насколько бы облегчилось написание плагинов для Wordpress со стороны встраивания новых блоков на сайт и изменения существующих? Или, например, как прикольно при таком подходе ваять админки для сайтов, или специализированные панели управления? Я просто ссусь кипятком.
Я уверен, что такой подход некоторый продвинутый народ усиленно юзает в своих CMSках и движках. Более того, например xpoint.ru полностью построен на таком подходею И это круто.
При таком подходе, мы на выходе контроллера получаем кусок XML’я (то есть чистые форматированные данные). Дальше, присоединяя к нему различные XSL шаблоны, конвертируем эти данные в любой формат, хоть в RSS, хоть в HTML, или даже в PDF. Круто ведь?
Есть тут и минусы
- Нужно знать XSLT
- Нужно придумывать язык разметки для каждого интерфейса (возможно, конечно, его более-менее унифицировать)
- В данный момент не все браузеры умеют обрабатывать XSTL, поэтому нам приходится делать это на стороне сервера. Отсюда какая-никакая, но нагрузка. (хотя этот пункт можно не считать за минус)
Я для себя твердо решил, что надо попытаться все это обдумать как следует и уверенными шагами идти к реализации этого подхода на практике. От читателей тоже хочется услышать мысли по этому поводу, или может быть показать примеры реализации этого подхода в open-source продуктах. Буду рад, если кто ссылок кинет.
Чмоке.
Идея крута. Жаль, XLST всё таки тот ещё орех, особенно на реальных проектах.
Только плохо, что XML (XHTML) это по сути представление и его объедигнять всё-таки плохо. Логика не там должна находиться.