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
Related examples in the same category