[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Slow XSLT

Subject: Re: Slow XSLT
From: Cleyton Jordan <cleytonjordan@xxxxxxxxxxx>
Date: Thu, 13 Mar 2008 00:53:28 +0000 (GMT)
Re:  Slow XSLT
--- David Carlisle <davidc@xxxxxxxxx> wrote:

> 
>   <xsl:variable name=set" select="Report/Rows//Row"
> />
>    .....
>    <xsl:apply-templates select="$set"/>
> 
> 
> you've given no indication of why you need this
> variable (it seems that
> it isn't needed)

The reason why I created this variable is because I
need to apply templates to all the Rows in the xml. 

However, the structure of the Rows in xml is a bit
peculiar. I can have 1, 2, 3 or even more RowGrp
elements before the Row elements. 

Since I do not know how many RowGrp elemetns I will
have I cannot do something like this:

<xsl:apply-templates select="Report/Rows/RowGrp/Row"/>
or this
<xsl:apply-templates
select="Report/Rows/RowGrp/RowGrp/Row"/>

Therefore, I created the variable using the //

<xsl:variable name=set" select="Report/Rows//Row"/>

I also read in some posts that it is faster to use a
node set in a variable. I might be wrong though. Any
suggestion considering that I can have lots of Row and
Cell elements in the xml?

<Rows>
   <RowGrp>
     <RowGrp>
       <Row heading="Name 1">
         <Cell>
           <Msr idx="1" val="10" />
           <Msr idx="2" val="15" />
         </Cell>
         <Cell/>
      </Row>
     </RowGrp>
     <RowGrp>
       <Row heading="Name 1">
         <Cell>
           <Msr idx="1" val="10" />
           <Msr idx="2" val="15" />
         </Cell>
         <Cell/>
      </Row>
    </RowGrp>
   <RowGrp>
 </Rows>

> >   <xsl:apply-templates
> select="$set[postion()]/*"/>
> 
> as I said last time, [position()] does nothing, it
> is the same as
> [true()] what do you intend it to do?

I have noticed that this does not work.

> > In the Row template I apply templates again but
> this
> > time I use the /* to get the child elements
> (Cell).
> > However, if I do this - <xsl:apply-templates
> > select="$set/*"/> - I will apply templates to all
> the
> > Cell elements. So I will have only one <tr> with
> lots
> > of <td>s. Something like that:
> 
> You just want to apply templates to the children of
> the current node,
> that's
> <xsl:apply-template select="*"/>
> or (more or less equivalently in this context) just
> <xsl:apply-templates/>

You are right. I want to apply templates to the
children of the current Row node that is in the node
set. But if it is not possible I will have to get rid
of the node set and use only apply templates Cell.

________________________________________________________________________
> The Numerical Algorithms Group Ltd is a company
> registered in England
> and Wales with company number 1249803. The
> registered office is:
> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR,
> United Kingdom.
> 
> This e-mail has been scanned for all viruses by
> Star. The service is
> powered by MessageLabs. 
>
________________________________________________________________________
> 
> 



		
___________________________________________________________ 
To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre. http://uk.security.yahoo.com

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.