This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Sorting XML with XSL, output as XML
- From: Joerg Heinicke <joerg dot heinicke at gmx dot de>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Sat, 04 May 2002 20:35:22 +0200
- Subject: Re: [xsl] Sorting XML with XSL, output as XML
- References: <3DE1DF234B51D211A70600104BB3F6DA05A6F1CB@NL-ROT-MAIL01>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hello Ernst,
again a identity transformation will help:
<xsl:template match="*|text()|@*">
<xsl:copy>
<xsl:apply-templates select="*|text()|@*"/>
</xsl:copy>
</xsl:template>
Then you need to add a special template for the book elements.
<xsl:template match="book">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="chapter">
<xsl:sort select="*[name()=$sortfield]" order="{$sortorder}" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
Regards,
Joerg
Ernst Wolthaus schrieb:
> Hi all,
>
> I'm new it this so I hope I'm posting this message the right way.
> Anyway...
>
> I've got a HTML-pager with a table, with a data island, so the XML data
> is bounded in the table by Datafld and Datasrc. Now I want to sort the
> XML-data by an XSL-file and a XSL:SORT command. However, this needs to
> be generic so I can use the same XSL for all kinds of XML, because else
> I have to make a XSL for every XML.
>
> Example:
> <?xml version="1.0"?>
> <book>
> <chapter>
> <number>2</number>
> <title>two</title>
> <paragraph>text 2</paragraph>
> </chapter>
> <chapter>
> <number>1</number>
> <title>one</title>
> <paragraph>text 1</paragraph>
> </chapter>
> </book>
>
> How do I sort this data by e.g. Number or by Title in a generic way. It's
> needs to output the "same" XML but sorted like:
>
> <?xml version="1.0"?>
> <book>
> <chapter>
> <number>1</number>
> <title>one</title>
> <paragraph>text 1</paragraph>
> </chapter>
> <chapter>
> <number>2</number>
> <title>two</title>
> <paragraph>text 2</paragraph>
> </chapter>
> </book>
>
> I know how to sort with xsl:param and <xsl:sort
> select="@*[name()=$sortfield]" order="{$sortorder}" /> but how do I get
> the XML back like the XML described above...???
>
> I've spend a lot of this on this so I would greatly appreciate any
> help!!
>
> Thanks,
> Ernst Wolthaus
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list