Re: [xsl] Fwd: Combing two different documents

Subject: Re: [xsl] Fwd: Combing two different documents
From: "andrew welch" <andrew.j.welch@xxxxxxxxx>
Date: Mon, 17 Jul 2006 11:13:34 +0100
On 7/17/06, David B <daavidb@xxxxxxxxx> wrote:
Hello,

I am trying to combine to seperate XML documents that have the same
structure but different leaf nodes, e.g:
---File 1.xml---
<base>
     <foo>
          <bar1>123</bar1>
     </foo>
</base>
--File 2.xml----
<base>
     <foo>
         <bar2>abc</bar2>
     </foo>
</base>

I want the output to be:
<base>
     <foo>
         <bar1>123</bar1>
         <bar2>abc</bar2>
     </foo>
</base>

Preferably without hardcoding too much of the structure of the file
into the .xsl.

How about something like:


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

<xsl:template match="*[not(*)]">
	<xsl:copy-of select="."/>
	<xsl:copy-of select="$file2//*[not(*)][count(preceding::*) =
count(current()/preceding::*)]"/>
</xsl:template>

You would apply this transform to file1.xml and reference file2.xml
using the document() function.

You could speed it up by using a key for the lookup into $file2 as the
heavy using of the preceding axis would likely make this very slow.

cheers
andrew

Current Thread