klaeuschen41
Mitglied
Hallo zusammen,
ich bin noch ziemlich neu beim XSLT-programmieren und wahrscheinlich gibt es eine einfache Lösung für mein Problem.
Ich möchte die Plus-Zeichen, die in Parametern für eine URL vorkommen, durch die entsprechende character entity ersetzen und das jeweilige Ergebnis in einen Link verpacken.
Das Ersetzen der Pluszeichen funktioniert mit dem folgenden Aufruf des unten stehenden Templates.
Allerdings will es mir nicht gelingen, das Ergebnis des Template-Aufrufes in den Link einzufügen. Wie schaffe ich es das Ergebnis des Template-Aufrufes an der Stelle von {param1} im folgenden Link einzufügen?
Für jede Hilfe wäre ich sehr dankbar!
Gruß,
Klaus
Hier noch der Vollständigkeit halber das replace-Template:
ich bin noch ziemlich neu beim XSLT-programmieren und wahrscheinlich gibt es eine einfache Lösung für mein Problem.
Ich möchte die Plus-Zeichen, die in Parametern für eine URL vorkommen, durch die entsprechende character entity ersetzen und das jeweilige Ergebnis in einen Link verpacken.
Das Ersetzen der Pluszeichen funktioniert mit dem folgenden Aufruf des unten stehenden Templates.
Code:
<xsl:variable name="parameter1" select="param1"/>
<xsl:call-template name="replace">
<xsl:with-param name="string" select="$parameter1"/>
<xsl:with-param name="pattern" select="'+'"/>
<xsl:with-param name="replacement" select="'charEntityForPlus'"/> <!-- hier "charEntityForPlus", weil die richtige character entity hier sonst als '+' dargestellt wird. -->
</xsl:call-template>
Allerdings will es mir nicht gelingen, das Ergebnis des Template-Aufrufes in den Link einzufügen. Wie schaffe ich es das Ergebnis des Template-Aufrufes an der Stelle von {param1} im folgenden Link einzufügen?
Code:
<a href="http:www.foo.de/?param1={param1}"><xsl:value-of select="title"/></a>
Für jede Hilfe wäre ich sehr dankbar!
Gruß,
Klaus
Hier noch der Vollständigkeit halber das replace-Template:
Code:
<xsl:template name="replace">
<xsl:param name="string" select="''"/>
<xsl:param name="pattern" select="''"/>
<xsl:param name="replacement" select="''"/>
<xsl:choose>
<xsl:when test="$pattern != '' and $string != '' and contains($string, $pattern)">
<xsl:value-of select="substring-before($string, $pattern)"/>
<!--
Use "xsl:copy-of" instead of "xsl:value-of" so that users
may substitute nodes as well as strings for $replacement.
-->
<xsl:copy-of select="$replacement"/>
<xsl:call-template name="replace">
<xsl:with-param name="string" select="substring-after($string, $pattern)"/>
<xsl:with-param name="pattern" select="$pattern"/>
<xsl:with-param name="replacement" select="$replacement"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>