RE:RE: [xsl] Join XMLs with XLST with ralative data

Subject: RE:RE: [xsl] Join XMLs with XLST with ralative data
From: Mangesh Kakade <wadapaav@xxxxxxxxx>
Date: Mon, 9 Jun 2003 03:29:14 -0700 (PDT)
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>
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"/>
				       </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>

Pls Help me 
Mangesh
----------From: Jarno.Elovirta@xxxxxxxxx 
> Hi,
> 
> > I am using join.xslt 
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> > <xsl:key name="rows-bstkcode" match="bstkcode"
> > use="bstkcode" />
> 
> The key should be
> 
>   <xsl:key name="rows-bstkcode" match="name"
> use="bstkcode" />
> 
> >   <xsl:for-each
> select="$x_22/STKAVAILABLE/STKMAST">
> 
> If you only want the STKCODE 31, i.e. the first one,
> this should be
> 
>   <xsl:for-each
> select="$x_22/STKAVAILABLE/STKMAST[1]">
> 
> >       <xsl:for-each select="$buy22">
> >         <xsl:copy-of select="key('rows-bstkcode',
> > $STKCODE)
> >         				/*[name() != 'bstkcode']" />
> >         				
> >       </xsl:for-each>
> 
> This should be e.g.
> 
>   <xsl:for-each select="$buy22">
>     <xsl:for-each select="key('rows-bstkcode',
> $STKCODE)">
>       <xsl:copy>
>         <xsl:copy-of select="@id" />
>       </xsl:copy>
>     </xsl:for-each>
> 
> Because what you had would output 
> 
>   <tran>
>     <STKMAST Alias="01" STKCODE="31">
>       <address/>
>       <address/>
>     </STKMAST>
>   </tran>
> 
> Cheers,
> 
> Jarno 
> 
> 
> 
> __________________________________
> Do you Yahoo!?
> Yahoo! Calendar - Free online calendar with sync to
> Outlook(TM).
> http://calendar.yahoo.com


__________________________________
Do you Yahoo!?
Yahoo! Calendar - Free online calendar with sync to Outlook(TM).
http://calendar.yahoo.com

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


Current Thread