I'd stick to
holli's idea, we've got experience with
pdf::api2, latex templates using
html::template, html2ps, but nothing beats XSL-FO and FOP.
Also, your xml can be easily converted to other formats as well.
"We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.