Re: [xsl] Selection of every second node

Subject: Re: [xsl] Selection of every second node
From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Tue, 21 Aug 2001 13:03:13 +0100
Hi Conny,

> I hope you can help me. How can I make a template that match with
> every second node?

You need to test the position() of the node element amongst the other
node elements in its parent root element. Fortunately, this is what
the match pattern does by default. You can look at the position() mod
2 to find the even node elements - if it equals 0 then the node
element is an even node. So try:

<xsl:template match="node[(position() mod 2) = 0]">
  ...
</xsl:template>

or:

<xsl:template match="node[not(position() mod 2)]">
  ...
</xsl:template>

Alternatively, you could have a template that matched all node
elements, but only apply templates to every second node element, with:

  <xsl:apply-templates select="node[not(position() mod 2)]" />

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread