Michael A. Thompson wrote:
My XSL file:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0">
    <xsl:output method="xml" indent="yes"/>
    
    <xsl:template match="AAA">
        <xsl:element name="AAA">
            <xsl:apply-templates select="DDD" />
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="DDD">
        <xsl:element name="DDD">
            <xsl:apply-templates select="BBB"></xsl:apply-templates>
        </xsl:element>
       
    </xsl:template>
    
    <xsl:template match="BBB">
        <xsl:element name="BBB">
            <xsl:attribute name="num">
                <xsl:value-of select="//DDD/@id"></xsl:value-of>
            </xsl:attribute>
            <xsl:value-of select="."></xsl:value-of>
        </xsl:element>
    </xsl:template>
    
</xsl:stylesheet>
Try simple one:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="AAA">
        <AAA>
            <xsl:apply-templates select="DDD"/>
        </AAA>
    </xsl:template>
    <xsl:template match="DDD">
        <DDD>
            <xsl:apply-templates select="BBB"/>
        </DDD>
    </xsl:template>
    <xsl:template match="BBB">
        <BBB num="{ancestor::DDD[1]/@id}">
            <xsl:value-of select="."/>
        </BBB>
    </xsl:template>
</xsl:stylesheet>
--
Oleg Tkachenko
Multiconn Technologies, Israel
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list