<xsl:template match="cd">
<xsl:apply-templates select="*" />
</xsl:template>
<xsl:template match="artist | title | playlist/work">
<xsl:variable name="el"> Defines name of XHTML element
<xsl:choose>
<xsl:when test="name() = 'artist'">h2</xsl:when>
<xsl:when test="name() = 'title' ">h3</xsl:when>
<xsl:when test="name() = 'work' ">pre</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:element name="{$el}"> Sets element name appropriately
<xsl:number count="cd |artist | title | playlist | work"
level="multiple" format="1.1.1 " />
<xsl:text> </xsl:text>
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
<xsl:template match="filed | label | catalog " />
Result