Note: this is NOT a duplicate of Merge 2 XML files based on attribute values using XSLT? but an extension to it. Given the following input files
file1.xml
<config>
<state version="10">
<root value="100" group="5">
<leaf number = "2"/>
</root>
<root value="101" group="6" overrideAttr="oldval">
<leaf number = "3"/>
</root>
</state>
</config>
file2.xml
<config>
<state version="10">
<root value="100" group="5">
<leaf number = "6"/>
</root>
<root value="101" group="6" overrideAttr="newval" addtionalAttr="hello">
<leaf number = "4"/>
</root>
</state>
</config>
I'd like to have this output.xml
<config>
<state version="10">
<root value="100" group="5">
<leaf number = "2"/>
<leaf number = "6"/>
</root>
<root value="101" group="6" overrideAttr="newval" addtionalAttr="hello">
<leaf number = "3"/>
<leaf number = "4"/>
</root>
</state>
</config>
Desired extensions are
- attributes (e.g. overrideAttr) on the "same node" (e.g. element root with value="101" and group="6") should be overwritten
- new attributes (e.g. addtionalAttr) should be added
Can this be achieved by xsl?