How to get a counter inside xsl:for-each loop that would reflect the number of current element processed.
For example my source XML is
<books> <book> <title>The Unbearable Lightness of Being </title> </book> <book> <title>Narcissus and Goldmund</title> </book> <book> <title>Choke</title> </book> </books>
What I want to get is:
<newBooks> <newBook> <countNo>1</countNo> <title>The Unbearable Lightness of Being </title> </newBook> <newBook> <countNo>2</countNo> <title>Narcissus and Goldmund</title> </newBook> <newBook> <countNo>3</countNo> <title>Choke</title> </newBook> </newBooks>
The XSLT to modify:
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/> <xsl:template match='/'> <newBooks> <xsl:for-each select='books/book'> <newBook> <countNo>???</countNo> <title> <xsl:value-of select='title'/> </title> </newBook> </xsl:for-each> </newBooks> </xsl:template> </xsl:stylesheet>
So the question is what to put in place of ???. Is there any standard keyword or do I simply must declare a variable and increment it inside the loop?
As the question is pretty long I should probably expect one line or one word answer 🙂
position(). E.G.: