Sorting by composition title is equally straight-forward
but we have to do it in a separate apply-templates
element
<xsl:template match="catalog"> <head> <title><xsl:value-of select="category"/></title> </head> <body> <h1><xsl:value-of select="category"/></h1> <xsl:apply-templates select="composer"> <xsl:sort select="name/last_name"/> <xsl:sort select="name/first_name"/> <xsl:sort select="name/middle_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> <xsl:template match="composer"> <h2><xsl:value-of select="name"/></h2> <xsl:apply-templates select="../composition[@composer=current()/@id]"> <xsl:sort select="title"/> </xsl:apply-templates> </xsl:template>