I would guess that you are trying to add the attribute after you have already 
added other child nodes. This is not allowed, see 
http://www.w3.org/TR/xslt#creating-attributes. Although if this were the case I 
would expect you to get an error...
What happens if you create an attribute using some static value:
<xsl:attribute name="value"><xsl:value-of 
select="'somestring'"/></xsl:attribute>
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