<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="fruit">
<fruit>
<xsl:apply-templates>
<xsl:sort select="name()" />
</xsl:apply-templates>
</fruit>
</xsl:template>
<xsl:template match="*">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
--
Charles Knell
cknell(_at_)onebox(_dot_)com - email
-----Original Message-----
From: G|ray Sen <guray(_at_)novaeres(_dot_)com>
Sent: Thu, 27 Jan 2005 20:08:53 +0100
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Sorting elements by element name
Hi,
I would like to sort some XML data by the names of the elements. For
example:
<fruit>
<apple>some example text</apple>
<pear>some more text</pear>
<banana>and even more text</banana>
</fruit>
to
<fruit>
<apple>some example text</apple>
<banana>and even more text</banana>
<pear>some more text</pear>
</fruit>
I have found some XSLT that does that on the net, but there seems to be a
problem when the elements have attributes. Is there a way to accomplish
the above (possibly by finetuning the XSLT below)?
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-template select="@* | node()">
<xsl:sort select="name()"/>
</xsl:apply-template>
</xsl:copy>
</xsl:template>
Many thanks
--~------------------------------------------------------------------
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>
--~--