This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Testing by counting or positional predicate
Daniel Bowen wrote:
>
> 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])]" />
>
Did you try
<xsl:variable
name="primary-textures"
select="//Texture[count(. | (key('key-texture', concat(@texture, ':',
@u, ':', @v))[1]) = 1]"
/>
which seems to me to be the equivalent to your generate-id()version?
Francis.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list