xsl-list
[Top] [All Lists]

RE: RE: Linear counting problem in nested loop.

2004-01-22 09:51:44
It is a bedrock principle of XSLT that variables, once bound, cannot be bound 
again. In short, you don't increment variables as you might in a loop construct 
in other programming languages. You will have to find another way. I suggest 
you investigate the generate-id() function.
-- 
Charles Knell
cknell(_at_)onebox(_dot_)com - email



-----Original Message-----
From:     Govil, Anoop (Contractor) 
<Anoop(_dot_)Govil(_at_)usmint(_dot_)treas(_dot_)gov>
Sent:     Thu, 22 Jan 2004 10:55:27 -0500
To:       "'xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com'" 
<xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject:  RE: [xsl] Linear counting problem in nested loop.

Hi Kakridge,

Actually, I don't need to count them all but need a running linear counter
that I use to give unique ids to various html elements like divs, img and
anchor tags while inside the for-each loop and inside the nested for-each
sub-loop. Also, this counter needs to be in same order,i.e., the order
should be same when inside the sub-loop and when in the main loop as I
mentioned in my original posting. Please suggest. Thanks.

Anoop

-----Original Message-----
From: kakridge(_at_)bellsouth(_dot_)net 
[mailto:kakridge(_at_)bellsouth(_dot_)net]
Sent: Thursday, January 22, 2004 10:26 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Linear counting problem in nested loop.


Just to be clear, you cannot take the value before the iteration, like
this:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="MENU">
        <xsl:variable name="total" select="count(MenuItems) +
count(*/SubMenuItems)"/>
        <xsl:value-of select="$total"/>

</xsl:template>
</xsl:stylesheet>



-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Govil, Anoop
(Contractor)
Sent: Thursday, January 22, 2004 9:34 AM
To: 'XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: [xsl] Linear counting problem in nested loop.

Hi,
I have the following XML and want to implement such that I can have a
linear
counter increment with each iteration of the parent for-each loop and
also
the nested for-each loop. 
<?xml version="1.0"?>
<MENU>
    <MenuItems>
        <MenuLabel>Menu 1</MenuLabel>
        <SubMenuItems>
            <SubMenuLabel>Sub Menu 1</SubMenuLabel>
        </SubMenuItems>
        <SubMenuItems>
            <SubMenuLabel>Sub Menu 11</SubMenuLabel>
        </SubMenuItems>
    </MenuItems>
    <MenuItems>
        <MenuLabel>Menu 2</MenuLabel>
        <SubMenuItems>
            <SubMenuLabel>Sub Menu 2</SubMenuLabel>
        </SubMenuItems>
    </MenuItems>
</MENU>
e.g. The counter should return as: 
1 for Menu 1
2 for SubMenu 1
3 for SubMenu 11
4 for Menu 2
5 for SubMenu 2
So far, what I got is the counter breaks when it reaches the second
<MenuItems>, as it doesn't know about the subMenu from the first
MenuItems
counted 3 already... So the output of my code is something like this:
1 for Menu 1
2 for SubMenu 1
3 for SubMenu 11
2 for Menu 2
3 for SubMenu 2
Any help in fixing this will be much appreciated. Thanks a lot!

Anoop

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


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

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




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



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