Re: [xsl] Replace nodes in xml file

Subject: Re: [xsl] 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

Current Thread