Hi all,
Wondering if somebody could shed some light on this one, I'm using the
ubiquitous replace-string template, e.g
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="from"/>
<xsl:param name="to"/>
<xsl:choose>
<xsl:when test="contains($text, $from)">
<xsl:variable name="before" select="substring-before($text, $from)"/>
<xsl:variable name="after" select="substring-after($text, $from)"/>
<xsl:variable name="prefix" select="concat($before, $to)"/>
<xsl:value-of select="$before"/>
<xsl:value-of select="$to"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="$after"/>
<xsl:with-param name="from" select="$from"/>
<xsl:with-param name="to" select="$to"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
I'm trying to use this to replace the value of an attribute, e.g.
<xsl:variable name="newValue">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="$attrib"/>
<xsl:with-param name="from" select="$toReplace"/>
<xsl:with-param name="to" select="$replaceWith"/>
</xsl:call-template>
</xsl:variable>
<xsl:attribute name="value"><xsl:value-of
select="$newValue"/></xsl:attribute>
If I do this an attribute called value is not added to my element. However, if
I change the final line to:
<xsl:element name="value"><xsl:value-of
select="$newValue"/></xsl:element>
A child element called value is successfully added.
I'm using xalan-j.
Any help would be much appreciated.
Cheers,
John
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list