XML transfrom: merge 2 or more different XML file into one

Jacinle Young

Usenet Archive
Joined
Dec 9, 2003
Messages
6
Reaction score
0
Hi,

I need to merge XML from different sources to 1 XML file. I am wondering if XSLT could do this job as usually it is used to perform 1 to 1 file transfrom

eg.
src1.xml
<?xml version="1.0" encoding="UTF-8"?>
<nickname>Fred</nickname>
<email></email>
<html>TRUE</html>
<firstname>Fred</firstname>
<lastname>Flintstone</lastname>

src2.xml
<?xml version="1.0" encoding="UTF-8"?>
<nickname>Fred</nickname>
<work>999-Quarry</work>
<home>999-BedrockLane</home>
<fax>888-Squawk</fax>
<pager>777-pager</pager>
<cell>555-cell</cell>

result.xml

<?xml version="1.0" encoding="UTF-8"?>
<addressbook>
<nickname>Fred</nickname>
<email></email>
<html>TRUE</html>
<firstname>Fred</firstname>
<lastname>Flintstone</lastname>
<work>999-Quarry</work>
<home>999-BedrockLane</home>
<fax>888-Squawk</fax>
<pager>777-pager</pager>
<cell>555-cell</cell>
</addressbook>

Jacinle
 

Cat (2)

Usenet Archive
Joined
Jun 23, 2004
Messages
11
Reaction score
0
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I need to merge XML from different sources to 1 XML file. I am wondering if XSLT could do this job as usually it is used to perform 1 to 1 file transfrom

eg.
src1.xml
<?xml version="1.0" encoding="UTF-8"?>
<nickname>Fred</nickname>
<email></email>
<html>TRUE</html>
<firstname>Fred</firstname>
<lastname>Flintstone</lastname>

src2.xml
<?xml version="1.0" encoding="UTF-8"?>
<nickname>Fred</nickname>
<work>999-Quarry</work>
<home>999-BedrockLane</home>
<fax>888-Squawk</fax>
<pager>777-pager</pager>
<cell>555-cell</cell>

result.xml

<?xml version="1.0" encoding="UTF-8"?>
<addressbook>
<nickname>Fred</nickname>
<email></email>
<html>TRUE</html>
<firstname>Fred</firstname>
<lastname>Flintstone</lastname>
<work>999-Quarry</work>
<home>999-BedrockLane</home>
<fax>888-Squawk</fax>
<pager>777-pager</pager>
<cell>555-cell</cell>
</addressbook>
I haven't done any work on a problem of that sort but I'd say XInclude would be the solution. http://www.w3.org/TR/xinclude/

You definitely can't do it in vanilla xslt. You could try some ugly programming hacks but I'd go with XInclude.
- --
Cat

http://www.ratrobot.com/writing/charity/ What is charity? Is it charitable to give people a blanket but not a job? In this article I will explore exactly what charity is.
Fri Jun 25 22:34:29 UTC 2004
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFA3Kh1KHRjYtwQ1QARAvI4AKDfQnELC0FGOTPC20dP68O5yNle8gCfX2G1 NTlH6Y9gJ8XsqvV+S0vUMpw= =35Yk
-----END PGP SIGNATURE-----
 

Cat (2)

Usenet Archive
Joined
Jun 23, 2004
Messages
11
Reaction score
0
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Wed, 23 Jun 2004 20:32:22 -0700, Jacinle Young wrote:
Sorry, there is a simple way to do it in vanilla xslt, and here it is.

=================== XSLT =======================
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:eek:utput indent="yes"/>

<xsl:template match="root">
<addressbook>
<xsl:copy-of select="child::*"/>
<xsl:copy-of select="document('test2.xml')/root/*[name(.)!='nickname']"/> </addressbook> </xsl:template> </xsl:stylesheet> ================= TEST1.XML =================== <?xml version="1.0" encoding="UTF-8"?> <root> <nickname>Fred</nickname> <email></email> <html>TRUE</html> <firstname>Fred</firstname> <lastname>Flintstone</lastname> </root> ================ TEST2.XML =================== <?xml version="1.0" encoding="UTF-8"?> <root> <nickname>Fred</nickname> <work>999-Quarry</work> <home>999-BedrockLane</home> <fax>888-Squawk</fax> <pager>777-pager</pager> <cell>555-cell</cell> </root>

================ OUTPUT ======================

<?xml version="1.0" encoding="UTF-8"?>
<addressbook>
<nickname>Fred</nickname>
<email></email>
<html>TRUE</html>
<firstname>Fred</firstname>
<lastname>Flintstone</lastname>
<work>999-Quarry</work>
<home>999-BedrockLane</home>
<fax>888-Squawk</fax>
<pager>777-pager</pager>
<cell>555-cell</cell>
</addressbook>

Quite a neat trick? And I wouldn't have know about it without your question 8^).
- --
Cat

http://www.ratrobot.com/java/menu/ Simple menu applet that lets you set colors,fonts and use it with a tiled background. It is completely FREE for any use.
Sun Jun 27 21:12:05 UTC 2004
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFA3zglKHRjYtwQ1QARAtwMAKDacBKFEsI4lsCl/xLWqqb+Hy13mQCfT5iF 3qypgKEWF/Oop3EzNFIL5S8= =sW2r
-----END PGP SIGNATURE-----
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,042
Messages
3,104,223
Members
248,131
Latest member
Tonypshaw1

Latest Threads

Top