To give you a good overview of the whole process, let us take a look at a short, quick example. This humble XML document will be the source:
<mydoc> <title>Hello world!</title> <message>I am <emphasis>so</emphasis> clever.</message> </mydoc>
The first step in using XSL-FO is to write an XSLT stylesheet that will generate a formatting object tree. Example 8-1 is a very simple (for XSL-FO) stylesheet. There are five templates in all. The first creates a page master, an archetype of real pages that will be created as text is poured in, setting up the geometry of content regions. The second template associates a flow object with the page master. The flow is like a baggage handler, throwing suitcases into a compact space that fits the geometry set up in the page master. The rest of the templates create blocks and inlines to be stacked inside the flow.
Example 8-1. An XSLT stylesheet to turn mydoc into a formatting object tree
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0" > <xsl:output method="xml"/> <!-- The root node, where we set up a page with a single region. <layout-master-set> may contain many page masters, but here we have defined only one. <simple-page-master> sets up a basic page type with width and height dimensions, margins, and a name to reference later with a flow. --> <xsl:template match="/"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="the-only-page-type" ...