Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

If statement and position(), last() functions

File: Data.xml <?xml version="1.0"?> <Book>   <Title>this is the title</Title>   <Authors>     <Author>A</Author>     <Author>B</Author>     <Author>C</Author>   </Authors>   <Year>2007</Year>   <Chapters>     <Chapter number="1" title="title 1">chapter 1</Chapter>     <Chapter number="2" title="title 2">chapter 2</Chapter>     <Chapter number="3" title="title 3">chapter 3</Chapter>     <Chapter number="4" title="title 4">chapter 4</Chapter>     <Chapter number="5" title="title 5">chapter 5</Chapter>   </Chapters> </Book> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">   <xsl:template match="Author">     <xsl:value-of select="." />     <xsl:if test="position() != last()">       <xsl:text>, </xsl:text>     </xsl:if>     <xsl:if test="position() = last()-1">       <xsl:text>and </xsl:text>     </xsl:if>     <xsl:if test="position() = last()">       <xsl:text>.</xsl:text>     </xsl:if>   </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?>   this is the title        A,      B,      C, and       2007        chapter 1     chapter 2     chapter 3     chapter 4     chapter 5