Login or Sign up Help | Site Map
Connecting Tech Pros Worldwide

How to merge two XML documents?

Question posted by: Hvid Hat (Guest) on July 4th, 2008 06:55 PM
How can I merge the following two XML documents:

Persons.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
<name>Albert</name>
<department_id>1</department_id>
</person>
<person>
<name>Barry</name>
<department_id>2</department_id>
</person>
<person>
<name>Charlie</name>
<department_id>3</department_id>
</person>
</persons>

Departments.xml
<?xml version="1.0" encoding="UTF-8"?>
<departments>
<department>
<id>1</id>
<name>Management</name>
</department>
<department>
<id>2</id>
<name>Sales</name>
</department>
<department>
<id>3</id>
<name>Support</name>
</department>
</departments>

To generate the following XML:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
<name>Albert</name>
<department>Management</department>
</person>
<person>
<name>Barry</name>
<department>Sales</department>
</person>
<person>
<name>Charlie</name>
<department>Support</department>
</person>
</persons>

Would you like to answer this question?
Sign up for a free account, or Login (if you're already a member).
Mukul Gandhi's Avatar
Mukul Gandhi
Guest
n/a Posts
July 5th, 2008
09:05 AM
#2

Re: How to merge two XML documents?
Please try this stylesheet (by applying to, Persons.xml):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/
Transform"
version="1.0">

<xsl:output method="xml" indent="yes" />

<xsl:variable name="dep" select="document('Departments.xml')" />

<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>

<xsl:template match="department_id">
<xsl:variable name="dep_id" select="." />
<department>
<xsl:value-of select="$dep/departments/department[id = $dep_id]/
name" />
</department>
</xsl:template>

</xsl:stylesheet>

 
Not the answer you were looking for? Post your question . . .
183,969 Experts ready to help you find a solution.
Sign up for a free account, or Login (if you're already a member).

Latest Articles: Read & Comment
  • Didn't find the answer you were looking for?
    Post Your Question
  • Top Community Contributors