[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] recursive counter not incrementing


Subject: [xsl] recursive counter not incrementing
From: Christopher Hansen <chansen1@xxxxxxxxx>
Date: Wed, 8 Dec 2004 17:21:22 -0500

Essentially i'm trying to use recursion to implement a counter in this manner:
while counter != number of items counted in each itemset (itemsets.xml)
 {
   If there is any occurrance of item[counter] in the transaction list
       counter++;
 }

However, my output shows that my counter increments from 0 to 1 once
and only once.
(XML source at the bottom)
Thanks,
Chris

<xsl:key name="coupKey" match="frequent_item_sets/set" use="item"/>
<xsl:variable name="transitems1"
select="document('transactions.xml')//transaction[1]" />

<xsl:output method="html"/>

<xsl:template match="/">

   <xsl:variable name="set1"
select="key('coupKey',$transitems1/items/item[1])" />
   <xsl:variable name="set2" select="$transitems1/items" />

<xsl:call-template name="subset">
    <xsl:with-param name="s1" select="$set1"/>
    <xsl:with-param name="s2" select="$set2"/>
    <xsl:with-param name="itemcount" select="count($set1/item)"/>
    <xsl:with-param name="i" select="0"/>
</xsl:call-template>

<xsl:template name="subset">
    <xsl:param name="s1"/>
    <xsl:param name="s2"/>
    <xsl:param name="itemcount"/>
    <xsl:param name="i"/>

   <!-- $itemcount will be '3' -->
   <p><xsl:value-of select="$itemcount"/></p>
   <p><xsl:value-of select="$i"/></p>

 <xsl:if test="$i != $itemcount">

    <xsl:for-each select="$s1/item">
       <xsl:variable name="sub1" select="."/>

       <xsl:for-each select="$s2/item">
         <xsl:if test="$sub1 = . ">

          We have a match!

              <xsl:call-template name="subset">
              <xsl:with-param name="s1" select="$s1/item[following-sibling]"/>
              <xsl:with-param name="s2" select="$s2"/>
              <xsl:with-param name="itemcount" select="$itemcount"/>
              <xsl:with-param name="i" select="($i)+1"/>
              </xsl:call-template>

         </xsl:if>
       </xsl:for-each>
    </xsl:for-each>
   </xsl:if>
 </xsl:template>
</xsl:stylesheet>

---------------------------------
itemsets.xml:

<frequent_item_sets>
  <set id="1" coupon="50 cents">
        <item>Milk</item>
        <item>Butter</item>
        <item>Eggs</item>
 </set>
......

transactions.xml:

<transactions>
 <transaction>
   <customer>
       <name>Dan</name>
       <email>asdf@xxxxxxxx</email>
   </customer>
   <items total="$11.78">
       <item>Milk</item>
       <item>Butter</item>
       <item>SuperPretzel</item>
       <item>Paper Towel (Scott's)</item>
  </items>
</transaction>
......


Current Thread