Sort XML with XSL

20 October 2012

Keywords: xsl, sort, merge, feed

Starting with version 1.2, etc_query supports XSL stylesheets. An immediate benefice is the possibility to sort an XML document. In the example below we mix and rearrange by date <txp:article_custom /> and <txp:recent_comments /> lists:

<txp:etc_query
	data='<dl>
	<txp:article_custom>
		<dt><txp:posted format="%F %T" /></dt>
		<dd>Published <txp:permlink><txp:title /></txp:permlink></dd>
	</txp:article_custom>
	<txp:recent_comments break="">
		<dt><txp:comment_time format="%F %T" /></dt>
		<dd>Comment on <txp:comment_permlink><txp:title /></txp:comment_permlink> by <txp:comment_name /></dd>
	</txp:recent_comments>
	</dl>'
>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" />
<xsl:template match="dl">
	<h4>History</h4>
	<dl>
	<xsl:for-each select="dt">
		<xsl:sort select="." order="descending" />
		<xsl:if test="position() &lt; 11">
		<xsl:copy-of select="." />
		<xsl:copy-of select="following-sibling::dd[1]" />
		</xsl:if>
	</xsl:for-each>
	</dl>
</xsl:template>
</xsl:stylesheet>
</txp:etc_query>

History (page 1)

2019-05-05 15:44:31
Comment on etc_tree by Ibadullah
2019-03-26 13:02:50
Comment on etc_date by Oleg
2019-03-25 12:05:28
Comment on etc_date by ibadullah
2019-02-07 13:15:11
Published etc_attribute
2019-01-28 13:29:32
Published etc_output_file
2019-01-01 14:23:43
Comment on etc_tree by Ramin
2018-11-07 01:13:26
Comment on Year 4.7 by Destry
2018-11-03 00:31:02
Comment on Year 4.7 by Jakob
2018-11-02 11:30:30
Comment on Year 4.7 by Oleg
2018-11-02 01:03:25
Comment on Year 4.7 by Jakob

But what about pagination? Here it is:

File(s)