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>
|