mercredi, juillet 04, 2007

Simuler une variable en XSLT

XSL permet de nombreuses choses... Mais en bon langage de pattern matching, XSLT ne permet pas de gérer des variables.

Enfin si, il existe en XSL des "variables", mais lorsque l'on y regarde de plus près, ces variables sont à vrai dire, des constantes !

Aussi, comment doit-on faire lorsque l'on doit effectuer une boucle, ou encore effectuer un traitement répété et conditionnel sur une variable (exemple : extraire d'une string, le pattern après la dernière ",").

La réponse est simple, on contournera le problème, en utilisant une fonction appelée avec paramètre.

Exemple pour extraire le pattern d'une string après la dernière ",". Si mastring est la string en question.

<xsl:template name="getLastPattern">
<xsl:param name="mystring" select="0"/>
<xsl:choose>
<xsl:when test="contains($mystring,',')">
<xsl:call-template name="getLastPattern">
<xsl:with-param name="mystring" select="substring-after($mystring,',')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="not(contains($mystring,':'))">
Afficher Pattern : <xsl:value-of select="$mystring"/>
</xsl:when>
</xsl:choose>
</xsl:template>

Il ne reste plus qu'à "appeler" la fonction à l'aide d'un <xsl:call-template name="getLastPattern"> en ajoutant le paramètre maString.
</xsl:call-template>

1 commentaire:

Anonyme a dit…

malia physicsb materialmany innovate splogs cropping delineates provinces ptos peripheral broader
masimundus semikonecolori