Subject: Re: Merging Two Nodesets .. can it be done?
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Tue, 14 Aug 2007 13:37:56 +0530
|
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@xxxxxxxxxxx> 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
|