1. A method comprising: receiving, by a computer system from a user, a first template document expressed in Rich Text Format (RTF); reading, by an RTF reader executing on the computer system, a first portion of the first template document; dispatching, by the RTF reader, a first event to an RTF parser executing on the computer system, the first event including a type and one or more attributes associated with the first portion; instantiating, by the RTF parser, a root data object based on the type and one or more attributes included in the first event, wherein the root data object includes a display method for outputting source code in Extensible Stylesheet Language (XSL); reading, by the RTF reader, a second portion of the first template document, wherein the second portion corresponds to a placeholder tag, a transformation tag, a block of static content, or a formatting attribute in the first template document; dispatching, by the RTF reader, a second event to the RTF parser, the second event including a type and one or more attributes associated with the second portion; instantiating, by the RTF parser, a child data object based on the type and one or more attributes included in the second event, wherein the child data object is instantiated as a child of the root data object in an object hierarchy, and wherein the child data object includes a display method for outputting source code in XSL; generating, by the RTF parser, a second template document expressed in XSL by invoking the display method included in the root data object and the display method included in the child data object; and combining, by the computer system, the second template document with report data to generate a report.