Subject: RE: [xsl] How to efficiently remove "a" nodes with no "b" descend ants From: "Michael Kay" <mhkay@xxxxxxxxxxxx> Date: Fri, 9 Mar 2001 10:32:54 -0000 |
> If I say > > > <xsl:template match="a[not(.//b)]"/> > > then all the descendants of "a" are checked for "b" elements. Let's > have a closer look at the input structure. > This presupposes that the XSLT processor you are using does > no optimisation, which may or may not be true. > Optimizers look for "quick wins", constructs that are used sufficiently often to be worth treating specially, and I suspect this isn't one of them. Generally, it's bad news to put a complex test like this into a match pattern, because there is little alternative to testing each node selected by <apply-templates> against this pattern; there is more scope to optimise a node-set expression than a pattern. You might find that a more efficient approach is <xsl:variable name="ancestors-of-b" select="//b/ancestor::*"/> <xsl:variable name="anc-of-b-count" select="count($ancestors-of-b)" <xsl:template match="a"> <xsl:if test="count(.|ancestors-of-b) != $anc-of-b-count"> ... Mike Kay XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to efficiently remove, FINLEY, Mike | Thread | Re: [xsl] How to efficiently remove, Teppo Peltonen |
Re: [xsl] multilingual web site, B. Dexheimer | Date | [no subject], David Carlisle |
Month |