call template et portée de variable ?
Bonjour à tous !
J'ai une série de template qui appellent un test avec des paramètres :
Si je met le test dans le template, cela fonctionne parfaitement :
Code:
1 2 3 4 5 6 7 8 9
|
<xsl:template match="/livre" mode="livres_bib_A">
<xsl:variable name="id" select="Index"/>
<xsl:variable name="vCond" select="/path1/path2/[Index=$id]/path3/v=1"/>
<xsl:variable name="path" select="/path1/path2[$vCond] | /path1/path2/path3/path4[not($vCond)]"/>
[pleins de XSL utilisant la variable $path]
</xsl:template> |
Fort de cela, et vu que je dois appliquer cela à des centaines de templates différents, j'ai donc décidé de remplacer le test écrit directement dans le template par un classique call-template en passant le paramètre id utilisé dans mes tests de variable.
Donc :
Code:
1 2 3 4 5 6 7 8 9
|
<xsl:template match="/livre" mode="livres_bib_A">
<xsl:call-template name="templatecondition">
<xsl:with-param name="id" select="Index"/>
</xsl:call-template>
[pleins de XSL utilisant la variable $path]
</xsl:template> |
et donc le template appelé correspondant :
Code:
1 2 3 4 5 6
|
<xsl:template name="templatecondition">
<xsl:param name="id"/>
<xsl:variable name="vCond" select="/path1/path2/[Index=$id]/path3/v=1"/>
<xsl:variable name="path" select="/path1/path2[$vCond] | /path1/path2/path3/path4[not($vCond)]"/>
</xsl:template> |
et là... ca ne fonctionne pas ! enfin quelque soit la valeur de v, je suis toujours dans le cas de [not($vCond)].
Je suspecte bien une histoire de portée de variable, mais dans ce cas là je ne vois pas pourquoi la portée changerait (entre directement dans le template et passée par le call-template)
Je suis preneur de quelques éclaircissements dans le concept 8O
Merci