On 7/17/06, David B <daavidb(_at_)gmail(_dot_)com> 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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--