|
Subject: Re: [xsl] Testing by counting or positional predicate From: "Daniel Bowen" <dbowen2@xxxxxxxxx> Date: Thu, 11 Jan 2001 10:29:53 -0700 |
Francis Norton wrote:
> David Carlisle wrote:
> >
> > > count($node1|$node2) = 1
> > >
> > > or:
> > >
> > > not(($node1|$node2)[2])
> >
> > or generate-id($node1)=generate-id($node1)
> >
> logically equivalent and certainly more readable, but on one stylesheet
> that I run (to de-dupe the output of an XML Spy conversion from XML
> Schema to XDR) the difference between Muenchian grouping with
> "count($node1|$node2) = 1" and one with "generate-id(node1) =
> generate-id(node2)" is 4.4 seconds v. 14.3 seconds!
Just for an opposing view point on this, on one stylesheet that I use
Muenchian grouping, I have a filter on the key "match". When I use the
"count" method, I have to use the filter again when selecting the nodes, but
when I use the "generate-id" method, I don't have to use the filter again.
In my case, the "generate-id" method is 2-3 times faster!
Example:
<xsl:key
name="key-texture"
match="Texture[0=count(preceding-sibling::Texture[1])]"
use="concat(@texture, ':', @u, ':', @v)" />
<xsl:variable
name="primary-textures"
select="//Texture[generate-id(.) = generate-id(key('key-texture',
concat(@texture, ':', @u, ':', @v))[1])]" />
is faster for me than:
<xsl:key
name="key-texture"
match="Texture[0=count(preceding-sibling::Texture[1])]"
use="concat(@texture, ':', @u, ':', @v)" />
<xsl:variable
name="primary-textures"
select="//Texture[0=count(preceding-sibling::Texture[1])][count(.|key('key-t
exture', concat(@texture, ':', @u, ':', @v))[1])]" />
-Daniel
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Testing by counting or po, Francis Norton | Thread | Re: [xsl] Testing by counting or po, Francis Norton |
| Re: [xsl] test multiple parameters , Dan Vint | Date | Re: [xsl] Testing by counting or po, Jeni Tennison |
| Month |