[xsl] Confision with replace-string template and attributes

Subject: [xsl] Confision with replace-string template and attributes
From: "Hattersley, John" <jhattersley@xxxxxxx>
Date: Wed, 10 Mar 2004 13:48:06 -0500
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


Current Thread