xsl-list
[Top] [All Lists]

RE: [xsl] populating table with sorted elements

2006-07-29 09:09:56
It's hard to see how you would do this in one step in XSLT 1.0.

What you need is a tree of sorted nodes to which you will apply the formatting 
template. 

So:
1) Produce a tree of nodes sorted in the order you want.
2) Apply the formatting template to the tree of sorted nodes.

In XSLT 1.0 you will either break the process into two steps, producing an 
intermediate document containing the sorted nodes, then applying the second 
stylesheet to the intermediate document, or use a node-set extension (details 
depend on which XSLT processor you are using) which will produce an in-memory 
tree of nodes that you can apply the template to.

In XSLT 2.0 you could simply create a variable to hold the tree of sorted nodes 
without requiring an extension or an intermediate document.

The EXSLT library may contain something useful. 
http://www.exslt.org/exsl/functions/node-set/index.html
-- 
Charles Knell
cknell(_at_)onebox(_dot_)com - email



-----Original Message-----
From:     Christian Marc Schmidt <christianmarc(_at_)gmail(_dot_)com>
Sent:     Sat, 29 Jul 2006 10:43:07 -0400
To:       xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject:  [xsl] populating table with sorted elements

I am a newcomer to XML/XSLT and am struggling
with a bit of code in which I am attempting to populate
a six-column table, while allowing an xsl:sort.

Here is a section of my current code:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

..

<table width="970" border="0" cellspacing="0" cellpadding="0">
    <xsl:for-each select="xml/work/*[position() mod 6 = 1]">
        <tr>
            <xsl:apply-templates
select=".|following-sibling::*[position() < 6]" />
        </tr>
    </xsl:for-each>
</table>

..

The XML structure I've set up looks like this:

<xml>
    <work>
        <piece>
        </piece>
         <piece>
        </piece>
        ...
    </work>
</xml>

How would I go about adding sort functionality? It seems like it would
be easy enough, yet all of my attempts so far have failed...

Any suggestions would be much appreciated!


Christian

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

<Prev in Thread] Current Thread [Next in Thread>