xsl-list
[Top] [All Lists]

Re: [xsl] Replace nodes in xml file

2010-04-02 22:13:58
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[(_at_)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(_dot_)chinta(_at_)gmail(_dot_)com> 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

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>