xsl-list
[Top] [All Lists]

[xsl] Help with staregies for outputting an incremental number in xslt

2007-11-29 09:16:10
Hello


Firstly, I am an inexperienced xslt user, so please forgive me if this a 
no-brainer.

My problem is this:
I have a list of nodes, and I need to output a node count with each node.
I use the position() function to output the node count. So far so good.

Recently however, the requirement has changed: under certain circumstances a node is ommited from the output. When a node is ommitted, the node count of the subsequent node is incorrect - because the position() function counts all nodes, including the omitted ones.


e.g.:

<xsl:for-each 
select="expensys:Lines/expensys:Line/expensys:Accruals/expensys:Accrual">

  <xsl:variable name="description">
    <xsl:value-of select="../../expensys:ItemDescription"/>
  </xsl:variable>

  <!-- Node ommission
       Set includeLine=false for personal spend lines with CorpCardRec personal 
settlement
       as we dont want to output these -->
   <xsl:variable name="includeLine">
     <xsl:choose>
       <xsl:when test="$description = 'Personal Spend'">
<xsl:if test="$transactionType = 'CorporateCardReconciliation'"> <xsl:if test="$corporateCardSettlementType = 'corporate'"> <xsl:value-of select="true()"/> </xsl:if> <xsl:if test="$corporateCardSettlementType = 'personal'"> <xsl:value-of select="false()"/> </xsl:if>
         </xsl:if>
<xsl:if test="$transactionType != 'CorporateCardReconciliation'"> <xsl:value-of select="true()"/>
         </xsl:if>
       </xsl:when>
       <xsl:otherwise>                                                                          
                   <xsl:value-of select="true()"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:variable>

   <xsl:if test="$includeLine='true'">
     <txn:Line>                                                                 
                  
       <txn:Number>                                                                             
                   <xsl:value-of select="position()"/>
       <txn:Number>

       <!-- More data from node is output here..... --!>

     </txn:Line>                                                                
                  
   </xsl:if>



I need the value of txn:Number to increment contigously, but this recent node ommission has thrown a spanner in the works :-(

I have searched through the forums and discovered its not possible to increment a variable in a for-each loop. Can anyone guide me to a solution?.



Many thanks in advance....

Adam

--~------------------------------------------------------------------
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>
--~--