RE: RFC: [xsl] Recursive Template Improvements/Suggestions ??

Subject: RE: RFC: [xsl] Recursive Template Improvements/Suggestions ??
From: "Bovy, Stephen J" <STEPHEN.Bovy@xxxxxx>
Date: Fri, 3 Jun 2005 13:05:32 -0400
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,'&quot;')">
  <xsl:variable name="xx"
       select="concat(substring-before($taft,'&quot;'),'\&quot;')"/>
  <xsl:call-template name="repQuote">
    <xsl:with-param name="tbef" select="concat($tbef,$xx)"/>
    <xsl:with-param name="taft"
        select="substring-after($taft,'&quot;')"/>
  </xsl:call-template>
</xsl:when>
<xsl:when test="$taft=''">
  bt(&quot;<xsl:value-of select="$tbef"/>&quot;);
</xsl:when>
<xsl:otherwise>
  <xsl:variable name="xx" select="concat($tbef,$taft)"/>
  bt(&quot;<xsl:value-of select="$xx"/>&quot;);
</xsl:otherwise>
</xsl:choose>
</xsl:template>

-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx]
Sent: Friday, June 03, 2005 2:13 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: RFC: [xsl] Recursive Template Improvements/Suggestions ??


    <xsl:variable name="zz">
      <xsl:value-of select="concat($xx,'\&quot;')"/>
    </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,'\&quot;')"/>



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,'&quot;')"/>
    </xsl:variable>
    <xsl:variable name="yy">
      <xsl:value-of select="substring-after($taft,'&quot;')"/>
    </xsl:variable>
    <xsl:variable name="zz">
      <xsl:value-of select="concat($xx,'\&quot;')"/>
    </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,'&quot;','\&quot;'),'&quot;'
)"/>
      <xsl:with-param name="taft"
select="substring-after($taft,'&quot;')"/>
      <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
________________________________________________________________________

Current Thread