









Lorsqu'on transforme un XML avec une feuille XSLT on a parfois besoin de remplacer une chaîne par une autre.
Nativement, le XSL ne le fait pas mais il y a possibilité de programmer un remplacement.
Vous devez ajoute le template suivant a votre feuille XSL :
<xsl:template name="subst"> <xsl:param name="text"/> <xsl:param name="replace"/> <xsl:param name="with"/> <xsl:choose> <xsl:when test="string-length($replace) = 0"> <xsl:value-of select="$text"/> </xsl:when> <xsl:when test="contains($text, $replace)"> <xsl:variable name="before" select="substring-before($text, $replace)"/> <xsl:variable name="after" select="substring-after($text, $replace)"/> <xsl:value-of select="$before"/> <xsl:value-of select="$with"/> <xsl:call-template name="subst"> <xsl:with-param name="text" select="$after"/> <xsl:with-param name="replace" select="$replace"/> <xsl:with-param name="with" select="$with"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template>
Normalement, en XSL pour afficher le contenu d'un noeud vous écrivez :
<xsl:apply-templates select="MonNoeudAAfficher" />
où MonNoeudAAfficher est à remplacer par le noeud désiré.
Pour utiliser la fonction de remplacement vous devrez modifier votre ligne comme ceci :
<xsl:call-template name="subst"> <xsl:with-param name="text"> <xsl:value-of select="MonNoeudAAfficher"/> </xsl:with-param> <xsl:with-param name="replace">MaChaineARemplacer</xsl:with-param> <xsl:with-param name="with">ChaineDeRemplacement</xsl:with-param> </xsl:call-template>
où :
Discussion