|
Subject: Re: [xsl] Merge two xml files into one ? From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Mon, 11 Feb 2008 17:15:31 +0000 |
On 11/02/2008, Kerry, Richard <richard.kerry@xxxxxxxxxxx> wrote:
>
>
> Can I use XSL to merge the contents of two xml files into one ?
>
> I have :
> File1.xml :
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE device SYSTEM "device.dtd">
> <device name="Test">
> <param name="CommsStatus" slot="2" />
> <param name="DriverStatus" slot="3" />
> <param name="LastDeviceError" slot="4" />
> <param name="AlarmCount" slot="5" />
> <param name="QuietMode" slot="6" />
> </device>
>
> File2.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE device SYSTEM "device.dtd">
> <device>
> <param name="CommsStatus" slot="5" />
> <param name="DriverStatus" slot="6" />
> <param name="LastDeviceError" slot="7" />
> <param name="AlarmCount" slot="8" />
> <param name="QuietMode" slot="9" />
> </device>
>
>
> I want:
>
> File3.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE device
> SYSTEM "device.dtd">
> <device name="Test">
> <param name="CommsStatus" slot="2" />
> <param name="DriverStatus" slot="3" />
> <param name="LastDeviceError" slot="4" />
> <param name="AlarmCount" slot="5" />
> <param name="QuietMode" slot="6" />
> <param name="CommsStatus" slot="5" />
> <param name="DriverStatus" slot="6" />
> <param name="LastDeviceError" slot="7" />
> <param name="AlarmCount" slot="8" />
> <param name="QuietMode" slot="9" />
> </device>
>
> Note that I don't care about the order of slot numbers, the contents of
> the second file just gets added at the end.
> Also that I will assume the same dtd and outermost element for both
> files.
Use the indentity template (see the other post a few minutes ago) with:
<xsl:template match="device">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:copy-of select="document('file:/c:/path/to/file2.xml')/device/param"/>
</xsl:copy>
</xsl:template>
This assumes you are processing file1.xml and want to include
file2.xml - you'd probably want to separate out the path to a
parameter.
cheers
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Merge two xml files into , Michael Kay | Thread | [xsl] Re: xml to XML using xslt- Su, Rose Rose |
| RE: [xsl] Merge two xml files into , Michael Kay | Date | [xsl] Re: xml to XML using xslt- Su, Rose Rose |
| Month |