I recently had the same question. The thread is below.
========================================
Hi,
I haven't looked at the table formatting, but hopefully this will start
you on your way...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates select="//*[(_at_)task]" mode="sorted-tasks">
<xsl:sort select="@task"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*" mode="sorted-tasks">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
Note that I use match="*" and a mode in the second template to avoid
having to specify the match pattern (//*[(_at_)task]) in two places which
would be a maintenance nightmare if the stylesheet were much bigger.
Rgds,
Dan.
-----Original Message-----
From: Mac Martine [mailto:email(_at_)magusdesigns(_dot_)com]
Sent: 03 March 2003 19:33
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] :xsl matching/sorting recursively by attribute:
Hello-
I am trying to match all elements with an attribute 'task' recursively
throughout the tree. I got that part working, but I have been unable to
get it 'sorted' how I want. I want all recursive elements with a 'task'
attribute to be sorted by the value of that attribute, and displayed.
So a simple xml file for this might look like:
<desktop id="desktop">
<lineEdit task="3"/>
<panel id="main">
<panel id="toolbar">
<button task="2">Back</button>
<button task="1">Foward</button>
</panel>
</panel>
</desktop>
So, next is the xsl. This is as close I have been able to get.... Can
anyone help solve this one? Thanks a lot! -Mac
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<body>
<table width="80%">
<xsl:apply-templates />
</table>
</body>
</xsl:template>
<xsl:template match="*">
<xsl:for-each select="*[(_at_)task>0]">
<xsl:sort select="@task"/>
<xsl:call-template name="tasks"/>
</xsl:for-each>
<xsl:apply-templates select='*'/>
</xsl:template>
<xsl:template name="tasks">
<tr>
<td width="5%">
<xsl:value-of select="@task"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Challa,
Harsha
Sent: Thursday, March 27, 2003 2:12 PM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] sort elements based on attribute value
Hi Gurus
how can i sort a list of elements based on the an ascending value of an
attribute
<elem value=3>
</elem>
<elem value=2>
</elem>
i need to sort the elements basd on attribute
gracias
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list