[xsl] working out where the last() is

Subject: [xsl] working out where the last() is
From: "Robert Walpole" <robert.walpole@xxxxxxxxxxxx>
Date: Fri, 6 Oct 2006 11:13:43 +0100

I have some XML data which contains an areaserved node as follows:

	<district name="South Hams">
		<town name="Dartmouth">
			<settlement name="Kingswear"/>
		<town name="Totnes"/>
	<district name="Torbay"/>

I am trying to write some XSLT to transform this to a list as follows:

Kingswear, Totnes, Torbay

In other words I want to output the name attribute of elements that have
no children and I want these names to be seperated by a comma. I can
output the attributes ok but my problem is trying to prevent the code
putting out a comma at the end of the list, given that I don't know
whether the end of the list will be a settlement, town or district. I
have tried using last() like this:

<xsl:if test="position() != last()">,&#160;</xsl:if>

but this only works on the context node, so in this case Kingswear,
Totnes and Torbay are all the last and none of them get a comma!

Any ideas anyone?

Many Thanks
Rob Walpole

Current Thread