Turn domain data into HTML in two steps: first by forming some kind of logical page, then rendering the logical page into HTML. This makes it possible to make a global change to all output by altering the second stage, or to support multiple looks-and-feels by providing multiple second stages.
See http://www.martinfowler.com/eaaCatalog/twoStepView.html
See also TemplateView, TransformView, HtmlIsAssembler.