I don't understand what you mean by "omitted nodes" (I have trouble
discussing non-existent objects). If position() counts it, then it must be
there. Please show us your XML to illustrate what you are talking about.
Incidentally, please don't do this:
<xsl:variable name="description">
<xsl:value-of select="../../expensys:ItemDescription"/>
</xsl:variable>
when you mean this:
<xsl:variable name="description"
select="../../expensys:ItemDescription"/>
It's the kind of thing that gives XSLT an undeserved reputation for being
verbose and slow.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Adam Lipscombe
[mailto:adam(_dot_)lipscombe(_at_)qucs(_dot_)co(_dot_)uk]
Sent: 29 November 2007 16:16
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Help with staregies for outputting an
incremental number in xslt
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/expensy
s: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>
--~--
--~------------------------------------------------------------------
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>
--~--