|
Subject: Re: [xsl] Slow XSLT From: Cleyton Jordan <cleytonjordan@xxxxxxxxxxx> Date: Sun, 2 Mar 2008 13:00:44 +0000 (GMT) |
Hi Manfred,
Thanks for your reply.
I will try your approach and let you know if it
improves the speed of the transformation.
One thing I will have to figure out is a way to
measure the speed improvement. I do not want to only
look at the watch and count the seconds.
I might use Javascript with the time function and
alert how long each approach takes (start time - end
time). Do you have any suggestions on how I could
measure that in an easier way?
Also, I did not quite understand your the simpler
approach suggestion. Could you please elaborate a bit
more on that?
> Another (simpler) approach would be to limit the
> maximum number of
> dimensions for the table so you can use match
> patterns like
> match="ColGrp"
> match="ColGrp/ColGrp"
> match="ColGrp/ColGrp/ColGrp"
> match="ColGrp/ColGrp/ColGrp/ColGrp"
> match="ColGrp[Col]"
> match="Col"
Cheers
C
--- Manfred Staudinger <manfred.staudinger@xxxxxxxxx>
wrote:
> On 01/03/2008, Cleyton Jordan
> <cleytonjordan@xxxxxxxxxxx> wrote:
> > However, I thought that by using // followed by a
> > predicate (
> //ColGrp[count(ancestor::ColGrp)=$depth]
> > ), I would go straight to only those inner most
> ColGrp
> > elements parent of the Col elements.
> No, the XPath processor first has to find a ColGrp
> element by looking
> into every corner of the input doc, and then check
> for the condition.
>
> > There is one problem with your approach though.
> You
> > are assuming that there will always be only two
> ColGrp
> > like this:
> >
> > <xsl:for-each
> >
>
select="/Reports/Report/Columns/ColGrp/ColGrp[count(ancestor::ColGrp)=$depth]">
>
> I would propose a slightly different approach:
> <xsl:for-each
> select="/Reports/Report/Columns/ColGrp">
> <xsl:apply templates mode="ColGrp"/>
> </xsl:for-each>
> passing the parameters needed for your processing
> and using only two
> templates for ColGrp: one for the innermost ColGrp,
> and one for the
> others
> <xsl:templates match="ColGrp[Col]" mode="ColGrp">
> processing for the innermost ColGrp here
> </xsl:for-each>
> <xsl:templates match="ColGrp" mode="ColGrp">
> processing here (you can always test the depth with
> count(ancestor::ColGrp))
> </xsl:for-each>
> plus one for Col:
> <xsl:templates match="Col" mode="ColGrp">
> processing here
> </xsl:for-each>
>
> Another (simpler) approach would be to limit the
> maximum number of
> dimensions for the table so you can use match
> patterns like
> match="ColGrp"
> match="ColGrp/ColGrp"
> match="ColGrp/ColGrp/ColGrp"
> match="ColGrp/ColGrp/ColGrp/ColGrp"
> match="ColGrp[Col]"
> match="Col"
>
> Hope this helps,
>
> Manfred
>
>
__________________________________________________________
Sent from Yahoo! Mail.
A Smarter Inbox. http://uk.docs.yahoo.com/nowyoucan.html
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Slow XSLT, Manfred Staudinger | Thread | RE: [xsl] Slow XSLT, Michael Kay |
| Re: [xsl] XSLT on Wikipedia, Kamal Bhatt | Date | Re: [xsl] Use of data() function, Florent Georges |
| Month |