[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Conditional merge of 2 XML files

Subject: RE: Conditional merge of 2 XML files
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 31 Aug 2005 14:16:04 +0100
concat 2 xml file
Unfortunately, for a newcomer to the language, you've selected a rather
difficult problem. I'm not sure I even understand the problem fully, for
example I don't understand whether the order of elements in the two files is
important: I get the impression that it is. This leads to all sorts of
questions, for example if the sequence in the first file is

A B F G

and in the second is

A D G F

what output do you want?

Also, presumably the hierarchy is important, so

<second>A B C</second><second>D E F</second>

is not the same as

<second>A B C D</second><second>E F</second>

I think the solution to this is going to involve a recursive walk of the two
trees in parallel: that is, a recursive template which is passed two
parameters, being the current position in both trees; it then needs to do
some analysis of what it finds at those positions, and then call itself
recursively, having advanced one or both of the two positions.

That's just a sketch, I don't have time to work it out more fully. It isn't
an exercise I would set on a beginner's course.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Thomas Tarpin-Lyonnet [mailto:bartleby@xxxxxxxxxx] 
> Sent: 31 August 2005 03:41
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Conditional merge of 2 XML files
> 
> 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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.