[xsl] Conditional merge of 2 XML files

Subject: [xsl] Conditional merge of 2 XML files
From: Thomas Tarpin-Lyonnet <bartleby@xxxxxxxxxx>
Date: Wed, 31 Aug 2005 10:40:49 +0800
Hello,
I'm a newbie in XSL and I would like to do something with 2 XML files and i
can't manage to do it.
Here is my problem.
I have 2 XML files, file_1.xml and file_2.xml structured as follow:
file_1.xml:
<?xml version="1.0"?>
<firstTag>
  <secondTag>
    <thirdTag> Thomas </thirdTag>
    <thirdTag> Tarpin </thirdTag>
  </secondTag>
  <secondTag>
    <thirdTag> Pipo </thirdTag>
    <thirdTag> Pipolaki </thirdTag>
  </secondTag>
</firstTag>

file_2.xml:
<?xml version="1.0"?>
<firstTag>
  <secondTag>
    <thirdTag here="Yes"> Thomas </thirdTag>
    <thirdTag here="Yes"> - </thirdTag>
    <thirdTag here="Yes"> Lyonnet </thirdTag>
  </secondTag>
  <secondTag>
    <thirdTag here="Yes"> Pipo </thirdTag>
    <thirdTag here="Yes"> Pipolaki </thirdTag>
  </secondTag>
</firstTag>

I would like to be able to do the diff between the two files and generate
another xml that will be the result of the merging of the two files only if
there are some thirdTag that are defined in file_1.xml and missing in
file_2.xml. Otherwise if the two files contains the same thirdTag then the
result.xml will be the same as file_2.xml.
The resulting file would be something like that:
result.xml:
<?xml version="1.0"?>
<firstTag>
  <secondTag>
    <thirdTag here="Yes"> Thomas </thirdTag>
    <thirdTag here="No"> Tarpin </thirdTag>
    <thirdTag here="Yes"> - </thirdTag>
    <thirdTag here="Yes"> Lyonnet </thirdTag>
  </secondTag>
  <secondTag>
    <thirdTag here="Yes"> Pipo </thirdTag>
    <thirdTag here="Yes"> Pipolaki </thirdTag>
  </secondTag>
</firstTag>

I know that i have to use the document() function but i don't know how.
How can i do that ? I'm a bit confused, i tried but i can't.
Anybody to help me ?

Thanks

Thomas

*********************************
*     Thomas Tarpin-Lyonnet     *
* http://jaccal.sourceforge.net *
*********************************

Current Thread