Thomas J.S.: Zwei XML Dokumente zusammenführen

Beitrag lesen

Hallo,

Ich habe zwei XML Dokumente. Nun möchte ich diese zu einem Dokument zusammenführen; d.h. das zweite XML Dokument soll einfach nach dem ersten folgen. Natürlich soll ein gültiges XML Dokument wieder rauskommen...

Wie geht das schnell und effektiv ?

Dokument 1 (foo1.xml)
----------
<?xml version="1.0" encoding="iso-8859-1"?>
<data1>
 <foo1 att1="att foo 1">foo 1</foo1>
 <foo2 att1="att foo 2">foo 2</foo2>
 <!-- comment foo -->
 <foo3 att1="att foo 3">foo 3</foo3>
</data1>
-----------

Dokument 2 (foo2.xml)
-----------
<?xml version="1.0" encoding="iso-8859-1"?>
<data2>
 <bar1 att1="att bar 1">bar 1</bar1>
 <!-- comment bar -->
 <bar2 att1="att bar 2">bar 2</bar2>
 <bar3 att1="att bar 3">bar 3</bar3>
</data2>
-----------

XSL (anzuwenden auf Dokument 1):
-----------
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes" encoding="iso-8859-1" />
 <xsl:template match="/">
  <newdocroot>
   <xsl:copy-of select="data1" />
   <xsl:copy-of select="document('foo2.xml')/data2" />
  </newdocroot>
 </xsl:template>
</xsl:stylesheet>
------------

Ergebniss (foo3.xml)
------------
<?xml version="1.0" encoding="iso-8859-1"?>
<newdocroot>
   <data1>
      <foo1 att1="att foo 1">foo 1</foo1>
      <foo2 att1="att foo 2">foo 2</foo2>
 <!-- comment foo -->
      <foo3 att1="att foo 3">foo 3</foo3>
   </data1>
   <data2>
      <bar1 att1="att bar 1">bar 1</bar1>
 <!-- comment bar -->
      <bar2 att1="att bar 2">bar 2</bar2>
      <bar3 att1="att bar 3">bar 3</bar3>
   </data2>
</newdocroot>
------------

Grüße
Thomas