File: Data.xml <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="Transform.xslt"?> <people> <person born="2008" died="2008" id="1"> <name> <first_name>A</first_name> <last_name>B</last_name> </name> <profession>A</profession> <profession>B</profession> <profession>C</profession> </person> <person born="2007" died="2007" id="2"> <name> <first_name>D</first_name> <middle_initial>E</middle_initial> <last_name>F</last_name> </name> <profession>G</profession> <hobby>H</hobby> </person> </people> File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="people"> <xsl:apply-templates select="person"/> </xsl:template> <xsl:template match="person"> Person <xsl:value-of select="position()"/> of <xsl:value-of select="count(//person)"/>: <xsl:value-of select="name"/> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> Person 1 of 2: A B Person 2 of 2: D E F