Bonjour,
je viens de mettre en exploitation une application web sur un apache tomcat qui utilise des feuilles XSL.
En test, je n'avais aucune erreur mais lors de la mise en exploitation, voilà l'erreur générée dans les logs du serveur :
ERREUR : 'file:***/xsl/inventaireDesDonnees.xsl: line 523: La variable 'envirDesc' est définie plusieurs fois dans la même portée.'
ERREUR BLOQUANTE : 'Impossible de compiler la feuille de style'
Cela vient donc de la variable 'envirDesc' qui est définie 2 fois dans inventaireDesDonnees.xsl. C'est effectivement le cas. Voici la portion du code concernée :
avec le template replace suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <!-- support d'archivage des données --> <xsl:if test="dataIdInfo/envirDesc !=''"> <xsl:variable name="envirDesc"> <xsl:call-template name="replace"> <xsl:with-param name="str" select="dataIdInfo/envirDesc"/> <xsl:with-param name="find">voltot</xsl:with-param> <xsl:with-param name="rep" select="$libVolTot"/> </xsl:call-template> </xsl:variable> <xsl:variable name="envirDesc"> <xsl:call-template name="replace"> <xsl:with-param name="str" select="dataIdInfo/envirDesc"/> <xsl:with-param name="find">/n</xsl:with-param> <xsl:with-param name="rep"><BR/></xsl:with-param> </xsl:call-template> </xsl:variable> <b><xsl:value-of select="$libSupportArchivage"/> : </b><xsl:value-of select="$envirDesc" disable-output-escaping="yes"/><xsl:copy-of select="$br"/><xsl:copy-of select="$br"/> </xsl:if>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <xsl:template name="replace"> <xsl:param name="str" /> <xsl:param name="find" /> <xsl:param name="rep" /> <xsl:choose> <xsl:when test="contains($str,$find)"> <xsl:value-of select="substring-before($str,$find)" /> <xsl:value-of select="$rep" /> <xsl:call-template name="replace"> <xsl:with-param name="str" select="substring-after($str,$find)" /> <xsl:with-param name="find" select="$find" /> <xsl:with-param name="rep" select="$rep" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$str" /> </xsl:otherwise> </xsl:choose> </xsl:template>
Je ne connais que très peu XSL donc je me tourne vers vous pour savoir quelle parade adoptée.
Est-il possible de regrouper les 2 opérations de remplacement "call-template replace" sous la même variable ?
Toute suggestion sera la bienvenue
Partager