[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: XPath - How to select preceding nodes that are de

Subject: Re: XPath - How to select preceding nodes that are descendants of specific ancestor?
From: Mike Trotman <mike.trotman@xxxxxxxxxxxxx>
Date: Sat, 26 Jun 2004 15:58:35 +0100
mike trotman
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@xxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxx> --+--




-- Datalucid Limited 8 Eileen Road South Norwood London SE25 5EJ / tel :0208-239-6810 mob: 0794-725-9760 email: mike.trotman@xxxxxxxxxxxxx / UK Co. Reg: 4383635 VAT Reg.: 798 7531 60



Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.