Re: [xsl] Merging common tags of 2 xml files

Subject: Re: [xsl] Merging common tags of 2 xml files
From: "varun bhatnagar varun292006@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 6 Aug 2014 12:04:04 -0000
Hi Martin,

Thanks a lot! Really appreciate your help.
But I am sorry this is not the root element. There are few more elements
above this one and if I do this then the whole xml is getting written twice.
Is there anything else I can do?

Thanks,
BR,
Varun




On Wed, Aug 6, 2014 at 1:08 PM, Martin Honnen martin.honnen@xxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> varun bhatnagar varun292006@xxxxxxxxx wrote:
>
>  *_File1.xml_*
>>
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <config>
>>    <version>
>>       <input00 version ="11"/>
>>       <name00 name ="abc"/>
>>    </version>
>>     <version>
>>       <input00 version ="22"/>
>>       <name00 name ="def"/>
>>    </version>
>> </config>
>>
>> *_File2.xml_*
>>
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <config>
>>    <version>
>>       <input00 version ="2"/>
>>       <name00 name ="xyz"/>
>>    </version>
>>      <version>
>>       <input00 version ="3"/>
>>       <name00 name ="pqr"/>
>>    </version>
>>      <version>
>>       <input00 version ="4"/>
>>       <name00 name ="uvw"/>
>>    </version>
>> </config>
>>
>> *_Expected Output.xml_*
>> *
>>
>> *
>> <config>
>>    <version Label="test" sNo="test">
>>       <input00 version ="2"/>
>>       <name00 name ="xyz"/>
>>    </version>
>>    <version Label="test" sNo="test">
>>       <input00 version ="3"/>
>>       <name00 name ="pqr"/>
>>    </version>
>>    <version Label="test" sNo="test">
>>       <input00 version ="4"/>
>>       <name00 name ="uvw"/>
>>    </version>
>> <version Label="test" sNo="test">
>>       <input00 version ="11"/>
>>       <name00 name ="abc"/>
>>    </version>
>>    <version Label="test" sNo="test">
>>       <input00 version ="22"/>
>>       <name00 name ="def"/>
>>    </version>
>> </config>
>>
>
> I think you simply need to write a template for the root that pulls in the
> nodes from the other document and then your template for "version" simply
> needs to add the attributes:
>
>
> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/
> 1999/XSL/Transform">
>
>   <xsl:param name="doc2-url" select="'file2.xml'"/>
>   <xsl:variable name="doc2" select="document($doc2-url)"/>
>
>
>   <xsl:output method="xml"  indent="yes"/>
>
>   <xsl:template match="@*|node()">
>     <xsl:copy>
>       <xsl:apply-templates select="@*|node()" />
>     </xsl:copy>
>   </xsl:template>
>
>   <xsl:template match="/*">
>     <xsl:copy>
>       <xsl:apply-templates select="@* , $doc2/*/node(), node()"/>
>
>     </xsl:copy>
>   </xsl:template>
>
>   <xsl:template match="version">
>     <xsl:copy>
>       <xsl:attribute name="Level">
>         <xsl:value-of select="'test'"></xsl:value-of>
>       </xsl:attribute>
>       <xsl:attribute name="sNo">
>         <xsl:value-of select="'test'"></xsl:value-of>
>       </xsl:attribute>
>       <xsl:apply-templates select="@* | node()"/>
>     </xsl:copy>
>   </xsl:template>
>
> </xsl:stylesheet>

Current Thread