xslt1.0 replace funktioniert nicht

Ich habe URLs mit einigen Sonderzeichen und möchte diese ersetzen. Ich verwende xslt 1.0, also schreibe ich den Code wie folgt.

<xsl:template name="string-replace-all"> 
        <xsl:param name="text"/> 
        <xsl:param name="replace"/> 
        <xsl:param name="by"/> 
        <xsl:choose> 
            <xsl:when test="contains($text,$replace)"> 
                <xsl:value-of select="substring-before($text,$replace)"/> 
                <xsl:value-of select="$by"/> 
                <xsl:call-template name="string-replace-all"> 
                    <xsl:with-param name="text" select="substring-after($text,$replace)"/> 
                    <xsl:with-param name="replace" select="$replace"/> 
                    <xsl:with-param name="by" select="$by"/> 
                </xsl:call-template> 
            </xsl:when> 
    <xsl:otherwise> 
      <xsl:value-of select="$text"/> 
    </xsl:otherwise> 
  </xsl:choose> 
</xsl:template> 

und wie folgt anrufen:

<td class="ms-vb">
            <xsl:variable name="link">
            <xsl:call-template name="string-replace-all"> 
                <xsl:with-param name="text" select="@FileRef"/> 
                <xsl:with-param name="replace" select="'&#39;'"/> 
                <xsl:with-param name="by" select="'%27'"/> 
            </xsl:call-template> 
            </xsl:variable>-->
                <a target="_blank" href="@link" ><xsl:value-of select="@New_x0020_Doc_x0020_Title" disable-output-escaping="yes" /></a>
            </td>

Ich erhalte die Fehlermeldung "Webpart kann nicht angezeigt werden". Kann jemand bitte vorschlagen, was ich hier falsch mache?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage