Within your description template you didn't ask the stylesheet to output anything, you just told it to apply-templates with no select attribute. This processes all children. If the a element doesn't have specific template then the default template is called which just outputs text, as you discovered.
To fix this you can just add a template that matches the a element:
Code:
<xsl:template match="a">
<xsl:copy-of select="."/>
</xsl:template>
As you need to output an exact copy of the a element then xsl:copy-of is the easiest option.
--
Joe (
Microsoft MVP - XML)