[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Merging two xml files


Subject: Re: [xsl] Merging two xml files
From: Mukul Gandhi <mukulgandhi2003@xxxxxxxxxxx>
Date: Tue, 13 Jan 2004 15:10:48 +0000 (GMT)

Hi Arul,
  I have come up, probably with a simpler solution ;) 

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes"/>

<xsl:variable name="addresses"
select="document('employeeAddresses.xml')"/>
   <xsl:template match="/employees">
      <employees>
	<xsl:for-each select="employee">
	   <xsl:variable name="id" select="@id"/>
	   <xsl:variable name="pincode"
select="$addresses/employees/employee[$id =
@id]/@pincode"/>
	  <employee pincode="{$pincode}">
             <lastname><xsl:value-of select="lastname"
/><
             </lastname>				    
<firstname><xsl:value-of select="firstname" />
             </firstname>
	     <address><xsl:value-of
select="$addresses/employees/employee/address" />
             </address>
	  </employee>
    </xsl:for-each>
</employees>
</xsl:template>

</xsl:stylesheet>

Regards,
Mukul

 --- Arulraj <p_arulraj@xxxxxxxxx> wrote: > 
> Hi,
>   
> I want to merge two xml files, I am using
> document()in
> xsl file for accessing one file and another file
> given
> in command prompt for the parser. 
> 
> first xml file given below
> employeeNames.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <employees>
> 	<employee id="1">
> 		<lastname>Smith</lastname>
> 		<firstname>Marsha</firstname>
> 	</employee>
> 	<employee id="2">
> 		<lastname>Arul</lastname>
> 		<firstname>Raj</firstname>
> 	</employee>
> 	<employee id="3">
> 		<lastname>Jaya</lastname>
> 		<firstname>Raj</firstname>
> 	</employee>
> </employees>
> 
> second xml file
> employeeAddresses.xml
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <employees>
> 	<employee id="1" pincode="4">
> 		<address>115 Marshal Rd., 
>       Greenville, MN 39281</address>
> 	</employee>
> 	<employee id="2" pincode="34">
> 		<address>chennai,India</address>
> 	</employee>
> 	<employee id="3" pincode="47">
> 		<address>Chennai</address>
> 	</employee>
> </employees>
> 
> I am merging this XML file using XSLT
> given below
> 
> <?xml version="1.0"?> 
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
> <xsl:output method="xml" indent="yes"/>
> 
> <!-- load the merge file -->
> <xsl:variable name="emps"
> select="document('employeeAddresses.xml')"/>
> 
> <xsl:template match="/">
> 
>    <employees>
>    <xsl:for-each select="employees/employee">
> 
>    <!-- cache the employee's ID -->
>    <xsl:variable name="id">
>       <xsl:value-of select="@id"/></xsl:variable>
> 
>       <!-- copy the child nodes -->
>       <employee>
>       <xsl:copy-of select="child::*"/>
> 
>          <!-- copy the children of the matching
> employee node 
>          from the merge file -->
>          <xsl:copy-of
> select="$emps/employees/employee[@id=$id]/child::*"
> />
>       </employee>
>    </xsl:for-each>
>    </employees>
> </xsl:template>
> </xsl:stylesheet>
> 
> Expected Output is:
> 
> <employees>
> <employee pincode="4">
> <lastname>Smith</lastname>
> <firstname>Marsha</firstname>
> <address>115 Marshal Rd., 
>       Greenville, MN 39281</address>
> </employee>
> <employee pincode="34">
> <lastname>Arul</lastname>
> <firstname>Raj</firstname>
> <address>chennai,India</address>
> </employee>
> <employee pincode="47">
> <lastname>Jaya</lastname>
> <firstname>Raj</firstname>
> <address>Chennai</address>
> </employee>
> </employees>
> 
> By using above XSL I want get pincode attribute in
> output file.
> How to check that attribute exists in <employee> and
> insert pincode attribute in produced output?
> 
> Please reply if you know,
> Thanks in advance
> Arul
> 
> __________________________________
> Do you Yahoo!?
> Yahoo! Hotjobs: Enter the "Signing Bonus"
> Sweepstakes
> http://hotjobs.sweepstakes.yahoo.com/signingbonus
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
>  

________________________________________________________________________
Yahoo! India Mobile: Download the latest polyphonic ringtones.
Go to http://in.mobile.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords