Je suis sous Tomcat/Xalan et je dois mettre à jour des sorties PDF via XSL:FO. Je d"couvre le XSL et patauge pas mal mais bon, je commence a comprend le principe.
Mainetnant mon soucis est le suivant : j'ai continuellement besoin de veriffier l'existance de données pour décider d'aaficher ou non un contenu dans ces données, exemple :
HTML :
<ListeMoyCom>
<MoyCom>
<Id_Telecom>C1</Id_Telecom>
<Coord_Com>01 40 95 09 34</Coord_Com>
</MoyCom>
<MoyCom>
<Id_Telecom>C2</Id_Telecom>
<Coord_Com>01 40 91 12 33</Coord_Com>
</MoyCom>
<MoyCom>
<Id_Telecom>C6</Id_Telecom>
<Coord_Com>06 03 48 25 32</Coord_Com>
</MoyCom>
<MoyCom>
<Id_Telecom>C4</Id_Telecom>
<Coord_Com>blabla@google.com</Coord_Com>
</MoyCom>
<MoyCom>
<Id_Telecom>C5</Id_Telecom>
<Coord_Com>http://www.google.com</Coord_Com>
</MoyCom>
</ListeMoyCom>
XSL :
La partie appellant la template :
<xsl:call-template name="ecrit_champs_test" >
<xsl:with-param name="champs">Téléphone :</xsl:with-param>
<xsl:with-param name="noeud" select="//MoyCom"/>
<xsl:with-param name="var" select="/Id_Telecom"/>
<xsl:with-param name="tag" select="C1"/>
<xsl:with-param name="valeur" select="/Coord_Com"/>
</xsl:call-template>
La template qui me sert de procédure :
<!-- ========================================================================================== -->
<xsl:template name="ecrit_champs_test">
<!-- ========================================================================================== -->
<xsl:param name="champs"/>
<xsl:param name="noeud"/>
<xsl:param name="var"/>
<xsl:param name="tag"/>
<xsl:param name="valeur"/>
<fo:table>
<fo:table-column column-width="35mm"/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block font-size="10pt">
<xsl:value-of select="$champs"/>
</fo:block>
</fo:table-cell>
<fo:table-cell background-color="#EEEEEE" padding="1mm">
<fo:block font-size="10pt">
<xsl:text disable-output-escaping="yes">&#160;</xsl:text>
j'ai : "<xsl:value-of select="$var"/>" = "<xsl:value-of select="$valeur"/>"
<xsl:for-each select="$noeud">
On test : "<xsl:value-of select="$var"/>" = "<xsl:value-of select="$valeur"/>"
<xsl:if test="$var[text()='$tag']">
<xsl:value-of select="$valeur"/>
</xsl:if>
</xsl:for-each>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block padding-top="2mm"/>
</xsl:template>
Evidement ca fonctionne pas, car la ligne
"<xsl:value-of select="$var"/>" = "<xsl:value-of select="$valeur"/>"
Ne permet pas de recuperer les enfants du node-set je suppose mais je ne comprend pas la syntaxe a utiliser...
En plus j'essaye d'utiliser xalan:nodeset et ca ne veut pas fonctionner, ca me dit que c'est une fonction inconnue ou un truc du genre...
Bref aidez moi, j'ai pas envi de me taper à la main quelque chose comme 200 champs de ce genre à coder betement !!!!!
Partager