[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Optimization using keys


Subject: Re: [xsl] Optimization using keys
From: António Mota <amsmota@xxxxxxxxx>
Date: Wed, 16 Feb 2005 13:33:10 +0000

Wow, the execution time drop to less than a half the time... I think
i'll check the literature to know more about keys... Too bad i can't
just sit and learn for awhile.

Many thanks, David.


On Wed, 16 Feb 2005 04:53:18 -0800 (PST), David Carlisle
<davidc@xxxxxxxxx> wrote:
> 
> > I'm afraid i don't understand what you're saying. Is it that if i want
> > to use keys i can not use document()?
> 
> no but the usage is different and it would be a waste of time to explain
> one use if you want another.
> 
> You only have one document so you can just delete all document() calls.
> 
> then a key is just a way of looking up certain nodes more quickly.
> 
> First tell the system to remember them, indexing on the Menu_K child:
> 
> <xsl:key name="m" match="Menu" use="Menu_K"/>
> 
> Then in any Xpath expression you can use
> key('m',wibble)
> which means the same as
> //Menu[Menu_K=wibble]
> except it is typically much faster as the system doesn't have to search
> the whole document every time: it looks them up in some kind of internal
> lookup table.
> 
> so
> 
> <xsl:apply-templates
> select="document('')//Menu[Menu_K=current()/MenuData]/Filhos/Menu"
> mode="copia"/>
> 
> becomes
> 
> <xsl:apply-templates
> select="key('m',MenuData)/Filhos/Menu" mode="copia"/>
> 
> which is less to type and faster to execute.
> 
> 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
Keywords