If statement and position(), last() functions : position « XSLT stylesheet « XML






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

1.position() function
2.Get the context position with position() function