<xsl:template match="catalog"> <head> <title><xsl:value-of select="title"/></title> </head> <body> <h1><xsl:value-of select="title"/></h1> <ul> <xsl:for-each select="composition/name"> <li><xsl:value-of select="."/></li> </xsl:for-each> </ul> <hr/> <xsl:apply-templates select="composition"> <xsl:sort select="composer/last_name"/> <xsl:sort select="composer/first_name"/> <xsl:sort select="composer/middle_name"/> <xsl:sort select="name"/> </xsl:apply-templates> <hr/> Copyright <xsl:value-of select="copyright"/><br/> Last Modified: <xsl:value-of select="last_updated"/><br/> <xsl:apply-templates select="maintainer"/> </body> </xsl:template>
.
selects the context node
xsl:for-each
iterates through the selected nodes,
setting each one to the current node in turn but does not
apply templates to that node.