Aplogies Ken - please ignore this request.
I'm being really dumb and mis-reading you're explanation of negative vs.
<xsl:number> - instead of vs. the '-1'.
Mike Trotman wrote:
Thanks Ken.
I've given your example a quick test - and it does seem to be
efficient - and better than my current interim solution:
<xsl:variable name='curridx'
select='generate-id(descendant-or-self::LEAF[1])'/>
<xsl:variable name='leafset' select='ancestor::SUBTREE//LEAF'/>
<xsl:variable name='num_prev_leafs'>
<xsl:for-each select='$leafset'>
<xsl:if test='$curridx = generate-id(.)'><xsl:value-of
select='position() - 1'/></xsl:if>
</xsl:for-each>
</xsl:variable>
I hadn't thought of using the <xsl:number> element in a variable
definition before.
Probably because I cannot get a clear picture in my head of how
<xsl:number> works.
I will investigate further.
However I now find I do need to know the number of previous LEAF nodes
at other points in the SUBTREE hierarchy - when - as you point out -
the number function will miss by one (? or more?).
Is there a modification to the <xsl:number> approach you can suggest
(as this seems a lot more elegant than my current attempt) that would
work from non-LEAF elements?
G. Ken Holman wrote:
At 2004-06-26 12:19 +0100, Mike Trotman wrote:
I have an XML document with multiple subtrees starting at element
'SUBTREE' containing 'LEAF' leaf element descendants at various
hierarchical depths.
I need to know - for each 'LEAF' element - how many preceding 'LEAF'
elements there are within the closest ancestor 'SUBTREE'.
I would treat it like figure numbering in a book, where the figures
can be anywhere in preceding subtrees, and let the processor do the
counting for you:
<xsl:variable name="count-temp">
<xsl:number count="LEAF" from="SUBTREE" level="any"/>
</xsl:variable>
<xsl:variable name="count" select="number($count-temp) - 1"/>
This won't be negative because you said you would be counting from a
LEAF.
I hope this helps.
.................. Ken
--
Public training 3 days XSLT & 2 days XSL-FO: Phoenix,AZ 2004-08-23
World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--+------------------------------------------------------------------
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>
--+--
--
Datalucid Limited
8 Eileen Road
South Norwood
London SE25 5EJ
/ tel :0208-239-6810
mob: 0794-725-9760
email: mike(_dot_)trotman(_at_)datalucid(_dot_)com
/
UK Co. Reg: 4383635
VAT Reg.: 798 7531 60