xsl-list
[Top] [All Lists]

RE:RE: Join XMLs with XLST with ralative data

2003-06-09 03:29:14
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(_dot_)Elovirta(_at_)nokia(_dot_)com 
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



<Prev in Thread] Current Thread [Next in Thread>