RE: [xsl] testing for numbers of nodes

Subject: RE: [xsl] testing for numbers of nodes
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 10 May 2008 22:36:51 +0100
> The present code I've got (not working) is:
> 
>        <xsl:for-each select="sense_area"><xsl:text> </xsl:text>
>         <xsl:for-each select="sense">
>          <xsl:if test="count(sense) &gt; I">(<xsl:number 
> format="I"/>)</xsl:if> <xsl:apply-templates />
>         </xsl:for-each>
>        </xsl:for-each>
> 
> Can someone perhaps see what is wrong with this?
> 

Firstly, I assume you meant "&gt; 1" rather than "&gt; I".

Secondly, inside the for-each the context node is a sense element, so
count(sense) counts how many sense children that sense element has. Try:

        <xsl:for-each select="sense_area"><xsl:text> </xsl:text>
         <xsl:for-each select="sense">
          <xsl:if test="last() &gt; 1">(<xsl:number format="I"/>)</xsl:if> 
          <xsl:apply-templates />
         </xsl:for-each>
        </xsl:for-each>

Michael Kay
http://www.saxonica.com/

Current Thread