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

RE: [xsl] unefficiate xpaths


Subject: RE: [xsl] unefficiate xpaths
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 9 Jun 2003 21:49:31 +0100

> 
> <xsl:for-each 
> select="//clients/client[count(commissions/commission[earnerId
> = //earners/earner[type = $rptType]/id]) = 0 and 
> <website=$prodClass)]">
> 

I wonder if you really mean "//earners". Are you interested only in
earners that are descendants of the commission you are testing? In that
case, use ".//earners".

If you are interested in testing against all earners in the document,
try setting a variable

<xsl:variable name="e" select="//earners/earner[type = $rptType]/id"/>

At present your performance is O(n**2), because //x typically involves a
serial scan of the document. With the above change, it should become
O(n) (assuming that type=$rptType selects a single element). For even
faster performance, you can always replace

    //EXPR[VAL=C]

with

   <xsl:key name="k" match="EXPR" use="VAL"/>

then

   key('k', C)

Michael Kay 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread