27. februar 2006 - 14:18
Der er
1 kommentar og
1 løsning
Søg og erstat funktion
Jeg søger en løsning som kan erstatte et ord med et andet i XSL. Jeg er klar over at xsl translate kun erstatter enkelte karakterer.
Det jeg går efter er noget i den her retning:
<xsl:variable name="varPlayerconfig">
<xsl:value-of select="replace(playerconfig,'dude','girl')" />
</xsl:variable>
Altså en funktion der tager 3 argumenter -> replace(text,find,replace)
Jeg håber på at der allerede findes en færdigpakket løsning derude - kan da ikke være første gang nogen efterspørger dette? Tak for opmærksomheden.
-mrjakel
28. februar 2006 - 13:21
#1
Her er svaret så for de langsomme:
<xsl:variable name="varEditorconfig">
<xsl:call-template name="globalReplace">
<xsl:with-param name="outputString" select="gender"/>
<xsl:with-param name="target" select="'dude'"/>
<xsl:with-param name="replacement" select="'girl'"/>
</xsl:call-template>
</xsl:variable>
<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>