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 |