|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Antw: Merging two xml files
Hi Arul,
<?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" select="@id"/> <!-- copy the pincode of the second XML --> <employee pincode="{$emps//employee[@id = $id]/@pincode}">
<!-- copy the child nodes -->
<xsl:copy-of select="*"/>
<!-- copy the address -->
<xsl:copy-of select="$emps//employee[@id = $id]/address"/>
</employee>
</xsl:for-each>
</employees>
</xsl:template>
</xsl:stylesheet>
I changed the
<xsl:variable name="id"><xsl:value-of select="@id"/></xsl:variable>
in <xsl:variable name="id" select="@id"/>
This is shorter to write, easier to read and you don't create a RTF.
Furhtermore I changed child::* in *.
I select the correct nodes from employeeAddress.xml with the help of the following pattern: $emps//employee[@id = $id].
In english this means something like select those employee from the second file from which the id-attribute is equal to the current id in the main xml.
Cheers,
Agnes
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








