Subject: Re: Antw: [xsl] Merging two xml files From: "Agnes Kielen" <agnes.kielen@xxxxxxx> Date: Tue, 13 Jan 2004 18:30:25 +0100 |
Hi, You can better send questions to the xsl-list. In this way everybody can learn from the questions and answers and everyone can answer! Change (untested): <xsl:variable name="pin" select="$emps//employee[@id = $id]/@pincode"/> <employee> <xsl:if test="$pin> <xsl:attribute name="pincode"> <xsl:value-of select="$pin"/> </xsl:attribute> </xsl:if> <!-- copy the child nodes --> <xsl:copy-of select="*"/> <!-- copy the address --> <xsl:copy-of select="$emps//employee[@id =$id]/address"/> </employee> Variable $pin will test to true if it exists otherwise it will be false. Cheers, Agnes ----- Original Message ----- From: "Arulraj" <p_arulraj@xxxxxxxxx> To: <agnes.kielen@xxxxxxx> Sent: Tuesday, January 13, 2004 11:08 AM Subject: Re: Antw: [xsl] Merging two xml files > Hi Agnes, > This works fine. I have one more doubt. If I have > pincode attribute in second.xml, then In Ouput should > have <employee pincode=""> otherwise I no need to have > pincode attribute just <employee> is enough. > > So I need to check pincode is appear in second XML > then adding it to resultant <employee> element. > > If you got an idea! > Please reply me. > > Thanking you, > Arul > > --- agnes.kielen@xxxxxxx wrote: > > 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 > > > > > __________________________________ > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Antw: [xsl] Merging two xml files, agnes . kielen | Thread | [xsl] from node 2 to node 5, Markus Hanel |
Re: [xsl] template mode - inheritab, David Carlisle | Date | RE: [xsl] Anyone can explain me thi, Wendell Piez |
Month |