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

Subject: Re: RFC: [xsl] Recursive Template Improvements/Suggestions ??
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 3 Jun 2005 10:13:23 +0100
    <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