[XSL~FO] tableau à colonnes variables
Bonjour,
Je souhaite pouvoir creer un pdf pr imprimer certaines tables !
Débutant avec cette tech., je rencontre certains pb dont :
les tables à imprimer ont un nombre de colonnes variables ! (le titre de la colonne correspont à une période : 01/2006, 02/2006 ...)
voici le doc xml produit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
<?xml version="1.0" encoding="UTF-8"?>
<ind1>
<entete>
<date>13/09/2006</date>
</entete>
<tableInd>
<mois>01/06</mois>
<mois>02/06</mois>
<mois>03/06</mois>
<mois>04/06</mois>
<mois>05/06</mois>
<mois>06/06</mois>
<mois>07/06</mois>
<mois>08/06</mois>
<mois>09/06</mois>
<ind1Body>
<nom>XVD</nom>
<indice>-1.0</indice>
<indice>10.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>18.33</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
</ind1Body>
<ind1Body>
<nom>FGT</nom>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
<indice>-1.0</indice>
</ind1Body>
</tableInd>
</ind1> |
voici mon fichier xsl :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:template match="ind1">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master
master-name="simpleA4"
page-height="29.7cm"
page-width="21cm"
margin-top="0.5cm"
margin-bottom="0.5cm"
margin-left="0.5cm"
margin-right="0.5cm">
<fo:region-before extent="3cm"/>
<fo:region-after extent="0.6cm"/>
<fo:region-body margin-top="3.20cm" margin-bottom="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simpleA4">
<fo:static-content flow-name="xsl-region-before">
<fo:block>
<xsl:apply-templates select="entete"/>
</fo:block>
</fo:static-content>
<fo:static-content flow-name="xsl-region-after">
<fo:block font-size="8pt" text-align="right" font-weight="bold" space-before="0.2cm">
Page <fo:page-number/> sur <fo:page-number-citation ref-id="ref-derniere-page"/>
</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates select="tableInd"/>
<fo:block id="ref-derniere-page"/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="entete">
<fo:table space-after="0.5cm">
<fo:table-column column-width="6.5cm"/>
<fo:table-column column-width="13.5cm"/>
<fo:table-body>
<fo:table-row height="1.7cm">
<fo:table-cell border="0.5pt solid white" display-align="center">
<fo:external-graphic src="img.gif" width="4cm"/>
</fo:table-cell>
<fo:table-cell border="0.5pt solid black" display-align="center">
<fo:block font-size="24pt" text-align="center" font-weight="bold" space-after="0.2cm"> NOTE </fo:block>
<fo:block font-size="10pt" text-align="right" font-weight="bold" margin-left="0.2cm">Date: <xsl:value-of select="date"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="tableInd">
<fo:table>
<fo:table-column column-width="1.8cm"/>
<xsl:for-each select="ind1/tableInd/mois">
<fo:table-column column-width="1.4cm"/>
</xsl:for-each>
<fo:table-header>
<fo:table-row height="0.8cm" text-align="center" font-size="10pt" display-align="center" font-weight="bold" >
<fo:table-cell border="1pt solid black">
<fo:block>A/D</fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="mois"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block>Total</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:apply-templates select="ind1Body"/>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="ind1Body">
<fo:table-row height="0.44cm" text-align="center" font-size="7pt" display-align="center" wrap-option="no-wrap">
<fo:table-cell border="1pt solid black">
<fo:block>
<xsl:value-of select="nom"/>
</fo:block>
</fo:table-cell>
<xsl:apply-templates select="indice"/>
</fo:table-row>
</xsl:template>
<xsl:template match="indice">
<fo:table-cell border="1pt solid black">
<fo:block>
<xsl:value-of select="indice"/>
</fo:block>
</fo:table-cell>
</xsl:template>
</xsl:stylesheet> |
mon fichier xml vs semble t'il correct?
est on obliger de specifier le nombre de colonne du moins, indiquer à chaque fois sa taille :
Code:
1 2
|
<fo:table-column column-width="1.4cm"/> |
le tableau ne peut il pas s'auto dimensionner?
ou puis je trouver de la doc?
merci