xsl-list
[Top] [All Lists]

Re: copying attributes to all child nodes

2004-01-26 10:02:36
Terence,

You can add a default copy template:

   <xsl:template match="*" mode="copy">
        <xsl:copy>
            <xsl:apply-templates mode="copy" select="@*"/>
            <xsl:apply-templates mode="copy"/>
        </xsl:copy>
    </xsl:template>

and match the exact elements you want the attribute added to in the copy
template that does also the attribute addition:

   <xsl:template match="next2element | next3element" mode="copy">
        <xsl:copy>
            <xsl:attribute name="attributeX"><xsl:value-of
select="//*/@attributeX"/></xsl:attribute>
            <xsl:apply-templates mode="copy" select="@*[name() !=
'attributeX']"/>
            <xsl:apply-templates mode="copy"/>
        </xsl:copy>
    </xsl:template>

Best Regards,
 George
-------------------------------------------------------------
George Cristian Bina mailto:george(_at_)oxygenxml(_dot_)com
<oXygen/> XML Editor - http://www.oxygenxml.com/


----- Original Message -----
From: "Terence Mac Goff" <tmacgoff(_at_)eircom(_dot_)net>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Monday, January 26, 2004 6:00 PM
Subject: Re: [xsl] copying attributes to all child nodes


Ken and George, thanks for both your great replies.

I think I understand the process a bit better, and hopefully my
terminology
will improve over time!

One last question - If I wanted to get the attribute applied to only
specific elements within the node, woudl I be better with a xsl:choose? or
a select?

<top.level.node attributeX="123456">
         <next element attributeXYZ="654321">
                 <next2element attributeX="123456"> this is some
text</next2element>
                 <next2element attributeX="123456"> this is some more text
</next2element>
         </nextelement>
</top.level.node>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>