vitus: comment 9

vitus
Mon, 21 Jan 2013 11:01:41 +0400

Суть в том, что вы хотите чтобы внутреннее представление, из которого генерируются различные внешние представления и одно из внешних представлений было одним и тем же объектом.

Да. именно так.

Если это представление напрямую всегда отдается клиенту когда он заходит смотреть конкретную статью это вероятно имеет смысл, но на большинстве блогов даже страница просмотра конкретной статьи содержит массу контента, который генерируется на основе еще и других страниц (related posts, облако тэгов, меню навигации).

Да, ну и что? Ну содержит. Вы немножко подумайте о том, какое количество не относящейся к делу информации содержат те файлы, в которых лежал mysql-евские базы данных. Когда вы разрабатываете сайт, хранящий данные в БД, вы об этом не думаете, у вас есть язык запросов. Но для XML у вас тоже бывают языки запросов. Главное чтобы у нас были четкие инструкции как из DOM-дерева, в котором кроме собственно информационного объекта содержится дизайн, списки других информационных объектов да ещё хрен знает что, выдрать редактируемые атрибуты нужного объекта.

Я, правда, полагаю, что не нужно брать готовых XPath и XQuery, а вместо этого использовать что-то похожее на селекторы в CSS. Потому что CSS дизайнер обязан знать.

редактирование одного объекта должно приводить к прямому редактированию внутреннего представления неопределенного количества документов.

В любом статическом генераторе вебсайтов редактирование одного объекта приводит к модификации нескольких документов. Вопрос заключается в том, как четко описать правила поиска этих документов, чтобы не приходилось шерстить всю файловую систему, чем зачастую грешат эти самые статические генераторы, и как минимизировать затраты ресурсов на перегенерацию большой страницы с длинным списком объектов, если изменился только один из этих объектов. Генераторы сайтов, в которых внутреннее представление отлично от внешнего, в этих случаях обычно перегенерируют всю страницу целиком из внутреннего представления. Если внутреннее представление совпадает с внешним, мы можем позволить себе сильно соптимизировать этот процесс и не трогать представление тех объектов, которые не менялись.