Доброго времени суток!
Требуется подход к структурированному хранению информации и построению документов на основе такого хранилища.
Например, предположим мы хотим описать политическую сцену в крупном городе РФ. Нужно описать политические партии (программа, история, члены, акции, отношения с другими партиями и т.д.), политиков (персональные данные, история, членство в партиях, публикации и т.д.), СМИ, объекты приложения политической борьбы и т.д. Очевидно, что в этом примере будут описания некоторых сущностей (партия, политик, экземпляр СМИ и т.д.), состоящие из набора атрибутов (значениями которых могут быть ссылки на другие элементы структурированного представления информации, текст, изображения), набор которых должен быть регламентирован для каждого типа сущности, а также описания событий или процессов, представляющие собой относительно слабо структурированные блоки информации, содержащие ссылки на описания упоминающихся сущностей (например, описание митинга, где встречаются имена политиков и названия политических партий, со ссылками на соответствующие сущности). Далее, получив такую информационную базу мы хотим строить документы на ее основе. Это может быть представление информации в целом (энциклопедия), с учетом "уровней доступа" (публичное представление будет содержать только ту часть информации, которую можно публиковать, представление для более специфического использования, может содержать также более специфическую информацию - при этом вся информация содержится в базе и разные ее части просто промаркированы для разделения уровней доступа), может быть некоторый срез (история одной партии, возможно с краткими сносками или врезками в местах упоминания других партий или конкретных политиков), может быть просто представление отдельного элемента базы (описание отдельного политика с краткой биографией). Также у документов может быть разное представление. Энциклопедия может быть гипертекстовой (набор страниц с гипертекстовыми связями между собой), может быть в "книжном формате" - непрерывный документ предназначенный для печати, где связи между отдельными участками информации представляются в виде "см. п. 4.3.2 гл. 4". То же может быть и с другими вариантами документов.
Мне видится, что задача разбивается на следующие части:
1) структурированное хранение информации 2) описание документов (структуры и того, как формируется содержимое на основе хранилища) 3) описание представлений документов
Плюс предполагается групповое наполнение/редактирование хранилища (что-то вроде Wiki).
Собственно, вопрос: какие подходы, технологии, инструменты можете посоветовать? Мне сразу пришел в голову XML для 1-й задачи, для 3-й тогда, вероятно, подойдет XSL, а со 2-й не очень понятно пока. Скажем, в рамках приведенного примера хочется в описании формирования содержимого указывать что-то вроде "перечисление всех описанных партий" + формат формирования описания партии.