I would guess that you are trying to add the attribute after you have
already >> added other child nodes.
Thanks for the response Josh, I didn't realise that was the case, I was adding
child elements to aid debugging! Don't I feel the fool.
For anyone else who has this problem, xalan-j didn't produce any error messages.
Cheers,
John
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of
Josh Canfield
Sent: 10 March 2004 20:11
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Confision with replace-string template and attributes
Josh
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of
Hattersley,
John
Sent: Wednesday, March 10, 2004 10:48 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Confision with replace-string template and attributes
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
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list