If the structure of your input XML is fixed, we can achieve the
desired output by hardcoding the structure. I can suggest something
like below:
<?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="/X">
<X>
<Y>
<Z>
<xsl:copy-of select="Y/Z/*" />
</Z>
<xsl:for-each select="Y">
<xsl:copy-of select="*[not(*)]" />
</xsl:for-each>
</Y>
</X>
</xsl:template>
</xsl:stylesheet>
But if you want the stylesheet to be generic, which could handle any
input XML, and merge the nodes, I think it will be slightly difficult
to write such a stylesheet.
On 8/14/07, Wasiq Shaikh <wasiq911(_at_)hotmail(_dot_)com> wrote:
Quick question .. is there a way to merge two node-sets in XSL that have
similar structure?
Example Input: (generated output from XSLT)
<X>
<Y>
<aaa>
<Z>
<bbb>
<ccc>
</Z>
</Y>
<Y>
<ddd>
<eee>
<Z>
<fff>
</Z>
</Y>
</X>
Desired Output: (This is how I would like to get it in the same XSLT
process)
<X>
<Y>
<Z>
<bbb>
<ccc>
<fff>
</Z>
<aaa>
<ddd>
<eee>
</Y>
</X>
Notice the Y elements are merged, as well as the Z elements.
Is there any function or algorithm out there that can do this in one shot
(or at all)? Or do I have to turn this into a two step process by making the
generated output an input do another XSL that does the merge?
Thanks for any insight!
W.S
--
Regards,
Mukul Gandhi
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--