RE: [xsl] position in a conditional for-each

Subject: RE: [xsl] position in a conditional for-each
From: Heather Lindsay <heather.lindsay@xxxxxxxxxxxxx>
Date: Wed, 3 Jan 2001 15:46:57 -0500
hi,
	Try this instead.  The template for "COOLJEX_ATTRIBUTE[@key =
'true']" will only go through the elements that you want and the position()
function can be used to determine when the last element is reached.

<xsl:stylesheet ...>
<xsl:template match="whateverYouHaveHere">
Your other stuff here
<xsl:apply-template match="COOLJEX_ATTRIBUTE[@key = 'true']"/>
your other stuff here
</xsl:template>

<xsl:template match="COOLJEX_ATTRIBUTE[@key = 'true']">
	<xsl:value-of select="@name"/>
	<xsl:if test="position() != last()">
		<xsl:text>,</xsl:text>
	</xsl:if>
</xsl:template>

</xsl:stylesheet>

However, I believe you can also do this:
<xsl:for-each select="COOLJEX_ATTRIBUTE[@key = 'true'">
	<xsl:value-of select="@name"/>
	<xsl:if test="position() != last()">
		<xsl:text>,</xsl:text>
	</xsl:if> 
</xsl:for-each>


Good luck,
Heather

-----Original Message-----
From: James Piva [mailto:james.piva@xxxxxxxxxxxxxxx]
Sent: Wednesday, January 03, 2001 3:26 PM
  The problem is that I can't know when
	the last element to meet the condition
	has passed.I would like to omit trailing comma.

	<xsl:for-each select="COOLJEX_ATTRIBUTE">
        <xsl:if test="@key='true'"> 
	    <xsl:value-of select="@name"/>
	    <xsl:text> , </xsl:text> 
	  </xsl:if>
	</xsl:for-each>

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


Current Thread