[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Subtree transformation
You need to use the "identity template" pattern. Please try this stylesheet: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <!-- identity template; copies everything --> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <!-- template for last "c" node --> <xsl:template match="c[not(following-sibling::c)]"> <xsl:copy> <xsl:apply-templates select="@*" /> <xsl:apply-templates /> </xsl:copy> <c id="2"/> <c id="3"/> </xsl:template> </xsl:stylesheet> This when applied to the XML: <a> <b> <bb> <bbb/> </bb> <c id="1"/> </b> <d> <e/> ... </d> </a> Produces output: <?xml version="1.0" encoding="UTF-8"?> <a> <b> <bb> <bbb/> </bb> <c id="1"/> <c id="2"/> <c id="3"/> </b> <d> <e/> ... </d> </a> Hope this helps. On 3/15/07, Garvin Riensche <g.riensche@g...> wrote: > Hello, > > I am wondering if it is possible to change a subtree of an XML tree > whose structure is not always the same. For example, the input XML can > look like > > <a> > <b> > <c id="1"/> > </b> > </a> > > I want to add some more "<c>" tags as children of the "<b>" tag to get > something like this: > > <a> > <b> > <c id="1"/> > <c id="2"/> > ... > </b> > </a> > > If the input would always look like this I would write a stylesheet that > looks like the following: > > <xsl:stylesheet match="/"> > <a> > <b> > <xsl:copy-of="/a/b/c"/> > <c id="2"/> > <c id="3"/> > </b> > </a> > > But how can I add further siblings to "<c>" if the preceding nodes > differ and if there are more tags below the closing "</b>" like in this > example: > > <a> > <b> > <bb> > <bbb/> > </bb> > <c id="1"/> > </b> > <d> > <e/> > ... > </d> > </a> > > > I need to copy everything and add some additional "<c>" tags. I dont't > know how to do that becase with xsl:copy-of I can copy the whole tree > but it can not be changed and if I iterate trough the tree with xsl:copy > every tag is immideately closed. It would be nice if someone could help. > > Regards, > Garvin -- Regards, Mukul Gandhi
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|