XSLT 1.0 plusieurs appels d'un template
Hello, :lol:
J'essaie de transformer certaines chaînes de caractères qui font planter une appli dans un fichier XML à l'aide de XSLT 1.0.
Pour cela j'utilise un template que j'essaie d'appeler plusieurs fois. Hors, seul le dernier appel au template fonctionne, et ne me change donc que le dernier string d'une série.
Pour illustrer :
Le XML que je veux modifier :
Code:
1 2 3 4 5
|
<?xml version="1.0" encoding="UTF-8"?>
<RAPPORT>
<reason>debut test_test_145 ‘ et test 151 — fin test</reason>
</RAPPORT> |
Le template XSLT :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<xsl:template name="globalReplace">
<xsl:param name="outputString"/>
<xsl:param name="target"/>
<xsl:param name="replacement"/>
<xsl:choose>
<xsl:when test="contains($outputString,$target)">
<xsl:value-of select="concat(substring-before($outputString,$target),$replacement)"/>
<xsl:call-template name="globalReplace">
<xsl:with-param name="outputString" select="substring-after($outputString,$target)"/>
<xsl:with-param name="target" select="$target"/>
<xsl:with-param name="replacement" select="$replacement"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$outputString"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> |
Les appels au template :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
<xsl:template match="text()">
<xsl:call-template name="globalReplace">
<xsl:with-param name="outputString" select="."/>
<xsl:with-param name="target" select="'‘'"/>
<xsl:with-param name="replacement" select="' '"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="text()">
<xsl:call-template name="globalReplace">
<xsl:with-param name="outputString" select="."/>
<xsl:with-param name="target" select="'—'"/>
<xsl:with-param name="replacement" select="' '"/>
</xsl:call-template>
</xsl:template> |
Le résultat attendu :
Code:
1 2 3 4 5
|
<?xml version="1.0" encoding="UTF-8"?>
<RAPPORT>
<reason>debut test_test_145 et test 151 _fin test</reason>
</RAPPORT> |
Le résultat effectif :
Code:
1 2 3 4 5
|
<?xml version="1.0" encoding="UTF-8"?>
<RAPPORT>
<reason>debut test_test_145PUI et test 151 _fin test</reason>
</RAPPORT> |
où PUI représente un caractère non désiré, qui fait planter l'appli utilisatrice du XML...:ptdr:
Auriez-vous une idée ou piste pour m'aider :calim2: