After a little experiment I realised that the two apply-templates in the second and third templates should have a select on them:
Code:
<xsl:template match="front">
<start><xsl:apply-templates select="@*|node()"/></start>
</xsl:template>
<xsl:template match="back">
<end><xsl:apply-templates select="@*|node()"/></end>
</xsl:template>
With your given example it didn't matter but it could in others.
--
Joe