Re: [xsl] Positional tests

Subject: Re: [xsl] Positional tests
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Wed, 02 Mar 2005 19:40:05 +0100
Tempore 19:17:58, die 03/02/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Paul Clarke <pclarke@xxxxxxxxxxxxxxxx>:

I need to find out if a block element that I process is the first one with
respect to its ancester S1, S2 or S3 elements. The hierarchy looks something
like this:

	test=". = ancestor::S3//block[1] or . = ancestor::S2//block[1] or .
= ancestor::S1//block[1]"

But this slows down processing enormously.


It could be (I'm not sure) that the 'xsl:number' element is faster than XPath.

If that's the case, then you might use this:

<xsl:variable name="cnt">
<xsl:number count="block" from="*[starts-with(local-name(),'S')]" level="any"/>
<xsl:if test="self::block and $cnt='1'">
<xsl:attribute name="hit">true</xsl:attribute>

Joris Gillis (
Spread the wiki (

Current Thread