The xsl:number
element has a variety of attributes to determine
number style, exactly what's counted, where numbering starts, and so forth
The position()
function returns the position of the current
node in the context node list
<xsl:template match="composition"> <h3><xsl:number value="position()"/>. <a name="{generate-id()}"> <xsl:value-of select="title"/> </a> </h3> <ul> <xsl:if test="string(date)"> <li><xsl:value-of select="date"/></li> </xsl:if> <xsl:if test="string(length)"> <li><xsl:value-of select="length"/></li> </xsl:if> <xsl:if test="string(instruments)"> <li><xsl:value-of select="instruments"/></li> </xsl:if> <xsl:if test="string(publisher)"> <li><xsl:value-of select="publisher"/></li> </xsl:if> </ul> <p><xsl:apply-templates select="description"/></p> </xsl:template>