この質問はあまり意味がありません。特に、CM Sperberg-McQueen や JLRishe の例のように XML がさらに複雑な場合や、属性が親または子/子のいずれかに存在する場合はなおさらです。
ただし、これを行いたい場合、XML 構造があなたの例と同じくらい単純であれば、次のようにします。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[name()=name(*)]">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
親に属性があり、それらを継承したい場合は、次のようにすることができます。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[name()=name(*)]" priority="1">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*[name()=name(../*)]">
<xsl:copy>
<xsl:copy-of select="../@*"/>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>