xsl-list
[Top] [All Lists]

Please help Problem for : increment a variable in a for-each?

2004-11-30 11:28:49
Hi all:
  I got so many peopel help but I can't get solution
for my problem yet. I need fix it asap so please help
me ! question is : How I can find relatiove position 
on the node which satify the condition ? I try to set
the variable called index and increment index value
when I call template but the index value is always 1

I work on this problems for several days, I wish I can
get help for solution.

Thanks



xml file:
<Lists>
<List >
  <List_ID>10</List_ID>
   <Title>A</Title>
  <Parent_ID>1</Parent_ID>
 </List>
 <List>
   <List_ID>11</List_ID>
   <Title>A1</Title>
   <Parent_ID>10</Parent_ID>
 </List>
<List >
    <List_ID>12</List_ID>
   <Title>B</Title>
  <Parent_ID>20</Parent_ID>
 </List>
 <List >
   <List_ID>13</List_ID>
   <Title>A2</Title>
   <Parent_ID>10</Parent_ID>
 </List>
 <List >
   <List_ID>14</List_ID>
   <Title>C</Title>
    <Parent_ID>1</Parent_ID>
 </List>
  </Lists>


xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; >

<xsl:template match="Lists"  >
        <xsl:apply-templates>
<xsl:with-param name="ValidCount"
select="number(count(List)-count(List[Parent_ID=../List/List_ID]))"/>
 
</xsl:apply-templates>     
</xsl:template>         

<xsl:template match="List">
   <xsl:param name="ValidCount"/>
   <xsl:variable name="self" select="."/> 
   <xsl:variable name="index" select="0"/> 
   <xsl:choose>
   <xsl:when test="Parent_ID=1 or
not(preceding-sibling::List[List_ID = $self/Parent_ID]
 or following-sibling::List[List_ID =
$self/Parent_ID])"> 
 <xsl:call-template name="formatTitle">
  <xsl:with-param name="index" select="$index+1"/>
  <xsl:with-param name="TotalCount"
select="$ValidCount"/> 
<xsl:with-param name="Title" select="Title"/>         
            
</xsl:call-template>
<xsl:call-template name="findChildNode">
  <xsl:with-param name="ParentID" select="List_ID"/>
</xsl:call-template> 
</xsl:when> 
</xsl:choose>                   
</xsl:template> 

<xsl:template name="findChildNode">
....this part work
</xsl:template>

<xsl:template name="formatTitle">
           <xsl:param  name="index" />
                  <xsl:param  name="TotalCount"/> 
               index:  <xsl:value-of select="$index"/>
                  <xsl:param name="Title"/>     
                  <xsl:choose>
<xsl:when test="$TotalCount=1 or $index=1">
 <b><xsl:value-of select="$Title"/></b>                                         
                                                </xsl:when>
                                                <xsl:when test="$index = 
$TotalCount -1">
                                                     <b> and <xsl:value-of 
select="$Title"/></b>
                                        
                                                </xsl:when>
                                                <xsl:when test="$index  = 
$TotalCount">
                                                     <b> <xsl:value-of 
select="$Title"/></b>                            
        
                                                </xsl:when>
                                                <xsl:otherwise>
                                                   <b>; <xsl:value-of 
select="$Title"/></b>     
                                                </xsl:otherwise> 
                                  </xsl:choose> 
        </xsl:template>
</xsl:stylesheet>


______________________________________________________________________ 
Post your free ad now! http://personals.yahoo.ca

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--