Subject: RE: [xsl] Conditional merge of 2 XML files From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 31 Aug 2005 14:16:04 +0100 |
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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Conditional merge of 2 XML fi, Thomas Tarpin-Lyonne | Thread | RE: [xsl] Conditional merge of 2 XM, Thomas Tarpin-Lyonne |
RE: [xsl] concat all items in a seq, Michael Kay | Date | RE: [xsl] concat all items in a seq, Michael Kay |
Month |