В модели данных отчета легко совместить нужды и OLAP и простого ценника.
Достаточно представить данные иерархически.
Пусть каждая строка данных отчеат содержит от 0-ля до бесконечности ПОДЧИНЕННЫХ НАБОРОВ ДАННЫХ (так сделано в одном из мощнейших генераторов Oracle Report Server).
CristalReport, или Access например, предполагают, что если и может быть подчиненный набор данных, то только один. А это крайне порою неудобно.
Предложенная организация данных одинаково хорошо подойдет как для простого "линейного" источника данных, так и для и для источника данных произвольной сложности.
Насчет XML — это обязательно?
Предлагаю использовать его КАК ОДИН ИЗ ФОРМАТОВ как для хранения макета, так и для входных данных.
Предлагаю обратить внимание на то, как работает нетовский грид — ему можно подать любой контейнер объектов, не обязательно рекордсет. Предлагаю сделать допустимым для отчета ЛЮБОЙ источник данных — от Array и ArrayList до TableSet. Рефлекшен легко позволит это сделать.На любой внешний источник данных может "навешиваться" адаптер, приводящие данные к удобному внутреннему виду.