Subject: Re: Replace nodes in xml file
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Sat, 3 Apr 2010 08:43:00 +0530
|
I think, the following XSLT transform may work for this problem description:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="confDoc" select="document('config.xml')" />
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="element/*">
<xsl:variable name="replc" select="$confDoc/config/element[@name =
current()/../@name]/*[local-name() = local-name(current())]" />
<xsl:copy-of select="if ($replc) then $replc else ." />
</xsl:template>
</xsl:stylesheet>
On Sat, Apr 3, 2010 at 12:45 AM, Suresh <suresh.chinta@xxxxxxxxx> wrote:
> I have an xml config file whose nodes are to be replaced into the
> source xml file I am transforming using xslt. The source file will be
> as
>
> <source>
> <element name="abc">
> <a>1</a>
> <b>2</b>
> <c>3</c>
> <d>4</d>
> </element>
> <element name="xyz">
> <a>4</a>
> <b>3</b>
> <c>2</c>
> <d>1</d>
> </element>
> </source>
>
> The config file has nodes defined in this format:
>
> <config>
> <element name="abc">
> <a>5</a>
> <d>9</d>
> </element>
> <element name="xyz">
> <a>5</a>
> <d>9</d>
> </element>
> </config>
>
> I need help in writing xslt to read nodes matching
> config/element/@name with source/element/@name and replace nodes in
> the source file.
>
> Thanks
--
Regards,
Mukul Gandhi
|