|
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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] recursive counter not inc, David Carlisle | Thread | [xsl] Error in saxon, Beatriz Langiano |
| RE: [xsl] Error in saxon, Michael Kay | Date | Re: [xsl] recursive counter not inc, David Carlisle |
| Month |