Subject: Re: XSLT 1.0 support in browsers, as of June 2008
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Wed, 18 Jun 2008 16:21:00 +0100
|
>> <xsl:if test="not(ancestor::ed:del) and not(//xref[@target=$anchor])">
>>
>> ...very much :0)
>
> The only way to avoid the "//" above would be to use xsl:key, which didn't
> seem necessary so far because Saxon and MSXML seem to perform well without.
> I'll give that a try when I have time.
I would definitely use a key... and you seem to check for the
existence of elements a lot doing things like:
<xsl:if test="//elem[cond]">
so you should be able to improve performance if you key all elements
by name and use that instead eg:
<xsl:key name="elems-by-name" match="*" use="name()"/>
with
<xsl:if test="key('elems-by-name', 'elem')[cond]">
Basically just go through the code replacing // with a key and where
possible don't use the ancestor axis... performance tuning step 1 :)
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
|