xsl-list
[Top] [All Lists]

RE: RFC: Recursive Template Improvements/Suggestions ??

2005-06-03 10:05:32
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(_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,'\&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
________________________________________________________________________

--~------------------------------------------------------------------
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>