Thanks every one for your help !!
Here is my new condensed and improved version:
<!-- recursive function to escape quote in -->
<!-- javaScript string literal assignment -->
<xsl:template name="repQuote">
<xsl:param name="tbef"/>
<xsl:param name="taft"/>
<xsl:choose>
<xsl:when test="contains($taft,'"')">
<xsl:variable name="xx"
select="concat(substring-before($taft,'"'),'\"')"/>
<xsl:call-template name="repQuote">
<xsl:with-param name="tbef" select="concat($tbef,$xx)"/>
<xsl:with-param name="taft"
select="substring-after($taft,'"')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$taft=''">
bt("<xsl:value-of select="$tbef"/>");
</xsl:when>
<xsl:otherwise>
<xsl:variable name="xx" select="concat($tbef,$taft)"/>
bt("<xsl:value-of select="$xx"/>");
</xsl:otherwise>
</xsl:choose>
</xsl:template>
-----Original Message-----
From: David Carlisle [mailto:davidc(_at_)nag(_dot_)co(_dot_)uk]
Sent: Friday, June 03, 2005 2:13 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: RFC: [xsl] Recursive Template Improvements/Suggestions ??
<xsl:variable name="zz">
<xsl:value-of select="concat($xx,'\"')"/>
</xsl:variable>
Don't use xsl:variable with content like this unless you need to
generate new nodes, this makes a result tree fragment with a root node
with child a document node with string value the supplied string. That's
a fairly expensive operation and when uou come to use it you use it as a
string so it has to be cast back to a string.
<xsl:variable name="zz"
select="concat($xx,'\"')"/>
is less to type and a lot more efficient as it just binds the variable
directly to a string.
In this case however you don't need variables at all
<xsl:variable name="xx">
<xsl:value-of select="substring-before($taft,'"')"/>
</xsl:variable>
<xsl:variable name="yy">
<xsl:value-of select="substring-after($taft,'"')"/>
</xsl:variable>
<xsl:variable name="zz">
<xsl:value-of select="concat($xx,'\"')"/>
</xsl:variable>
<xsl:call-template name="repQuote">
<xsl:with-param name="tbef" select="concat($tbef,$zz)"/>
<xsl:with-param name="taft" select="$yy"/>
<xsl:with-param name="stop" select="0"/>
</xsl:call-template>
is
<xsl:call-template name="repQuote">
<xsl:with-param name="tbef"
select="concat($tbef,substring-before($taft,'"','\"'),'"'
)"/>
<xsl:with-param name="taft"
select="substring-after($taft,'"')"/>
<xsl:with-param name="stop" select="0"/>
</xsl:call-template>
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. For more information on a proactive anti-virus
service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--