Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XSL for-each: how to detect last node?

Tags:

xslt

I have this simple code:

<xsl:for-each select="GroupsServed">   <xsl:value-of select="."/>,<br/> </xsl:for-each></font> 

I'm trying to add a comma for each item added.

This has 2 flaws:

  1. Case of when there's only 1 item: the code would unconditionally add a comma.
  2. Case of when there's more than 1 item: the last item would have a comma to it.

What do you think is the most elegant solution to solve this?

I'm using XSLT 2.0

like image 441
sivabudh Avatar asked Nov 15 '09 21:11

sivabudh


1 Answers

If you're using XSLT 2.0, the canonical answer to your problem is

<xsl:value-of select="GroupsServed" separator=", " /> 

On XSLT 1.0, the somewhat CPU-expensive approach to finding the last element in a node-set is

<xsl:if test="position() = last()" /> 
like image 198
Stobor Avatar answered Sep 24 '22 08:09

Stobor