Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

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.