Sample XSL formatting objects

Sample XSL formatting objects
XSL-FO documents are XML files with output information. They contain information about the output layout and output contents. XSL-FO documents are stored in files with a .fo or a .fob file extension. It is also quite common to see XSL-FO documents stored with an .xml extension, because this makes them more accessible to XML editors.
<?xml version="1.0" encoding="ISO-8859-1"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">



<fo:layout-master-set>

  <fo:simple-page-master master-name="A4">

    <!-- Page template goes here -->

  </fo:simple-page-master>

</fo:layout-master-set>



<fo:page-sequence master-reference="A4">

  <!-- Page content goes here -->

</fo:page-sequence>

</fo:root>



Explanation of the above structure
XSL-FO documents are XML documents, and must always start with an XML declaration:
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
The <fo:root> element is the root element of XSL-FO documents. The root element also declares the namespace for XSL-FO:
<fo:root xmlns:fo=”http://www.w3.org/1999/XSL/Format”> <!– The XSL-FO document goes here –> </fo:root>
The <fo:layout-master-set> element contains one or more page templates:
<fo:layout-master-set>
<!—The page templates go here –>
</fo:layout-master-set>
Each <fo:simple-page-master> element contains a single page template. Each template must have a unique name (master-name):
<fo:simple-page-master master-name=”A4″>
<!– One page template goes here –>
</fo:simple-page-master>
One or more <fo:page-sequence> elements describe the page contents. The master-reference attribute refers to the simple-page-master template with the same name:
<fo:page-sequence master-reference=”A4″>
<!– Page content goes here –>
</fo:page-sequence>
Note: The master-reference “A4” does not actually describe a predefined page format. It is just a name. You can use any name like “eBIZ“, “MyDoc“, etc.
Sample XSL-FO template
<xsl:template match="chapter">

  <fo:flow>

    <xsl:apply-templates/>

  </fo:flow>

</xsl:template>



<xsl:template match="chapter/title">

  <fo:block font-size="18pt" font-weight="bold"

            text-align="centered">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>



<xsl:template match="para">

  <fo:block font-size="12pt" space-before="1pc"

            text-align="justified">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>



<xsl:template match="emphasis">

  <fo:inline font-style="italic">

    <xsl:apply-templates/>

  </fo:inline>

</xsl:template>