[no subject]

<xsl:value-of select='$updates/updates/elem [@xpath="/employee/address/country" ]/@xvalue' />

which should return the string "USA".
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Jianyu Lai <jlai@xxxxxxxx>
Sent:     Tue, 1 Feb 2005 08:57:59 -0800
To:       "'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject:  [xsl] Merging two xml documents using xslt

Hi all,

I'm rather new to XSL. I am struggling trying to come up with an xslt to
solve the following problem:

First I have the source xml that looks like this:
<employee>
  <name>
    <first>Bob</first>
  </name>
</employee>

I have another xml (updates.xml) that contains information about how to
update the above source. Notice that this updates.xml is dynamically
generated, and its contents vary.

<updates>
  <elem xpath="/employee/address/country" xvalue="USA" />
  <elem xpath="/employee/name/first" xvalue="Bill" />
</updates>

I want to write an xslt that reads information from updates.xml, and updates
source.xml based on these criteria:
- if xpath in updates.xml exist in source.xml, replace source xml node with
xvalue;
- otherwise, create xml node in source(recursively if necessary), with
xvalue defined in updates.xml;

Basically here is the result xml that I need:
<employee>
  <name>
    <first>Bill</first>
  </name>
  <address>
    <country>USA</country>
  </address>
</employee>

Is this something that can be done by xslt? If so, could any one shed some
light on this? Your help is greatly appreciated.

Jianyu Lai

Current Thread