Subject: RE: RE: [xsl] Join XMLs with XLST with ralative data From: Americo Albuquerque <melinor@xxxxxxx> Date: Mon, 9 Jun 2003 16:31:07 +0100 |
Hi > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Mangesh Kakade > Sent: Monday, June 09, 2003 11:29 AM > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE:RE: [xsl] Join XMLs with XLST with ralative data > > > Hi Jarno and all Gurus , > Thanks for the reply ...earlier i was in digest list > now i am in daily-list.. > I have modified my xslt as suggested but still it is > not working properly so the out put with the two xml s > i.e. > 22.xml > <STKAVAILABLE> > <STKMAST Alias="01" STKCODE="31" STKDESC="FANTA "> > <STKDESC IndexID="5017"/> > </STKMAST> > <STKMAST Alias="01" STKCODE="30" STKDESC="PEPSI"> > <STKDESC IndexID="5017"/> > </STKMAST> > .... > </STKAVAILABLE> > buy22.xml > <buyermaster> > <name id="a001" deptid="01"> > <bstkcode>31</bstkcode> > </name> > <name id="a010"> > <bstkcode>40</bstkcode> > </name> > <name id="a003" deptid="10"> > <bstkcode>31</bstkcode> > <bstkcode>20</bstkcode> > </name> > </buyermaster> > > And out put I want is .... > < tran> > <stock> > <stockcode>31</stockcode> > <name id="a001" deptid="01"> > <name id="a003" deptid="10"> > </stock> > <stock> > <stockcode>30</stockcode> > <name id="a010"> > </stock> > ...and so on if stock code from 22.xml matches > bstkcode from buy22.xml > </tran> (...) Try this: <xsl:template match="STKAVAILABLE"> <tran> <xsl:apply-templates/> </tran> </xsl:template> <xsl:template match="STKMAST"> <stock> <stockcode><xsl:value-of select="@STKCODE"/></stockcode> <xsl:apply-templates select="document('buy22.xml')/buyermaster/name[bstkcode=current()/@STKCODE]" /> </stock> </xsl:template> <xsl:template match="name"> <xsl:copy> <xsl:copy-of select="@*"/> </xsl:copy> </xsl:template> When applied to 22.xml produces the expected result > so based on suggestion I have modified my xslt to : > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:key name="rows-bstkcode" match="name" > use="bstkcode"/> > <xsl:variable name="x_22" > select="document('22.xml')"/> > <xsl:variable name="buy22" > select="document('buy22.xml')"/> > <xsl:template match="/"> > <tran> > <xsl:for-each > select="$x_22/STKAVAILABLE/STKMAST"> > <xsl:variable name="STKCODE1" > select="@STKCODE"/> > <xsl:for-each select="$buy22/buyermaster"> > <stock> > <stockcode> <xsl:value-of > select="$STKCODE1" /></stockcode> > <xsl:for-each > select="key('rows-bstkcode',$STKCODE1)"> > <xsl:copy> > > <xsl:copy-of > select="bstkcode"/> Here you probably want <xsl:copy-of select="@*"/> instead. > </xsl:copy> > </xsl:for-each> > </stock> > </xsl:for-each> > </xsl:for-each> > </tran> > </xsl:template> > </xsl:stylesheet> > > but out put I am getting still is : > <?xml version="1.0" encoding="UTF-8" ?> > <tran> > <stock> > <stockcode>31</stockcode> > </stock> > <stock> > <stockcode>30</stockcode> > </stock> > <stock> > <stockcode>32</stockcode> > </stock> > </tran> > (...) Your code should work, it worked with msxml3 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE:RE: [xsl] Join XMLs with XLST wi, Mangesh Kakade | Thread | RE: RE: [xsl] Join XMLs with XLST w, Jarno . Elovirta |
RE: [xsl] read/write in the same xm, Lars Huttar | Date | [xsl] xsl:sort by attribute, soriano_s |
Month |