[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: XSL - using for-each with sort - can't access prev
Subject: Re: XSL - using for-each with sort - can't access previous sorted nod e
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 25 Nov 2003 18:29:54 -0500
|
Jeff,
Rick's tip is a good one although it doesn't address your actual problem.
The problem you posed is rather tricky, since XSLT 1.0 doesn't have ready
access to its own results. The cleanest solution would therefore be to
process your list in two passes, the first to sort, the second to format.
The second pass then has access to the sorted order. This can be done
either with two stylesheets, or with one stylesheet and your processor's
node-set() extension function (most have one).
If you really want to do it in one pass, it's not impossible, but it won't
be pretty.
Please advise if these hints aren't enough and you'd like more specifics on
any of the options I've mentioned. I'd probably use the node-set()
extension function as the best balance of simple and efficient, if I could
be sure the function would be available when the stylesheet is run. (In
XSLT 2.0 you'll be able to do the same thing transparently.)
Cheers,
Wendell
At 05:16 PM 11/25/2003, Rick wrote:
Jeff,
Make sure that when you sort you specify the data-type
<xsl:sort select="@page" data-type="number"/>
or the 18 will come after the 1 and before the 2.
rick
At 04:45 PM 11/25/2003 -0500, you wrote:
Hi all... just joined this list. Greetings :)
I was wondering if someone might have an answer for me on this...
Here's sample XML:
<quiz>
<question id="1" page="4"/>
<question id="2" page="6"/>
<question id="3" page="1"/>
<question id="4" page="18"/>
<question id="5" page="7"/>
<question id="6" page="5"/>
</quiz>
In my XSLT, I want to sort by page. So I have:
<xsl:for-each select="question">
<xsl:sort select="@page"/>
Now - as I am doing things to each question during the for-each, I want to
be able to access the "id" attribute in the question outputted JUST PRIOR to
the one currently being outputted. I can't seem to be able to do this. I've
tried using position() and <xsl:number> and combinations of the two, and
have been unsuccessful. Could anyone give me some advice?
======================================================================
Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
|
Atom 0.3 |
|
|