when test="position()=last()"
File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<emailList>
<head:header xmlns:head="http://www.domain.com/namespace/header">
<title>Email List</title>
<maintainer>Joe</maintainer>
</head:header>
<person type="personal" id="p001">
<name>person1</name>
<email>p@hotmail.com</email>
</person>
<person type="work" id="p002">
<name>person2</name>
<email>p@hotmail.com</email>
</person>
<person type="personal" id="p003">
<name>person3</name>
<email>p3@hotmail.com</email>
</person>
</emailList>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<xsl:template match="/">
<xsl:apply-templates select="emailList/person" />
</xsl:template>
<xsl:template match="person">
<xsl:choose>
<xsl:when test="position()=last()">
The last entry in your email list is
<xsl:value-of select="name" />.</xsl:when>
<xsl:otherwise>
<div>
<xsl:value-of select="name" />,
<xsl:value-of select="email" />
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Output:
<div>person1,
p@hotmail.com
</div>
<div>person2,
p@hotmail.com
</div>
The last entry in your email list is
person3.
Related examples in the same category