J'avoue que je comprends pas trop ce que tu veux faire... ceci dit j'ai fait pas mal de xsl:fo...
Il faut pas essayer de tout goupiller dans un template qui va rapidement devenir monstrueux. Il faut par contre bien maîtriser les transformations xslt avant de s'attaquer à xslfo...
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<!-- ici on décrit la structure du document et des pages ( entête, corps, pied de page)--> </fo:layout-master-set>
<xsl:apply-templates select="paragraph"/><!-- sélectionner la partie du xml qu'on veux transformer -->
</fo:root>
</xsl:template>
|
Le template racine ( "/" ) est idéal pour déclarer la mise-en-page comme tu l'as fait également. Après la déclaration on amorce la transformation en sélectionnant un élément de l'xml. Dans le template de l'élément on peut ensuite détailler...
<xsl:template match="paragraph">
<fo:block xsl:use-attribute-sets="bl.basics">
<xsl:apply-templates /><!-- transforme les enfants de paragraph -->
</fo:block>
</xsl:template>
<xsl:template match="sup">
<fo:inline baseline-shift="super"><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="sub">
<fo:inline baseline-shift="sub"><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="b">
<fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline></xsl:template>
<xsl:template match="i">
<fo:inline font-style="italic"><xsl:apply-templates/></fo:inline></xsl:template>
<xsl:template match="u">
<fo:inline text-decoration="underline"><xsl:apply-templates/></fo:inline></xsl:template>
|
Pour bien saisir la philosophie fo il ne faut pas hésiter à consulter les nombreux exemples disponible sur le net et de commencer avec des transformations simples. La syntaxe fo est assez obscure et 'verbeuse' ce qui la rend moins évidente à maîtriser.
Je t'apprends sans doute rien en disant qu'il est possible de convertir ensuite le fichier fo en pdf avec FOP...
Message édité par avander le 23-08-2008 à 10:53:49