last() as index
File: Data.xml <wine grape="Chardonnay"> <winery>shop 1</winery> <product>product 1</product> <year>1998</year> <desc>description</desc> <prices> <list>6.99</list> <discounted>5.99</discounted> <case>71.50</case> </prices> </wine> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" omit-xml-declaration="yes" indent="no" /> <xsl:template match="item[3]"> ~~~~ Start of item element's template ~~~~ 1. This node: { <xsl:apply-templates /> } 2. First node: { <xsl:value-of select="../item[1]" /> } 3. Last node: { <xsl:value-of select="../item[last()]" /> } 4. Preceding node: { <xsl:value-of select="preceding-sibling::item[1]" /> } 5. Next node: { <xsl:value-of select="following-sibling::item[1]" /> } 6. flavor attribute value of first node: { <xsl:value-of select="../item[1]/@flavor" /> } ~~~~ End of item element's template ~~~~ </xsl:template> <xsl:template match="item" /> </xsl:stylesheet> Output: shop 1 product 1 1998 description 6.99 5.99 71.50