Problem sorting xml by date <xsl: sort select = "/">
I am trying to sort my xml by date, but my xml and xsl r are not working, like this
<xsl:template match="/">
<xsl:for-each select="news/item">
<xsl:sort select="date1" order="descending" />
<xsl:value-of select="date1"/>
</xsl:for-each>
</xsl:template>
MYXML
<news>
<item>
<date1>January 1, 2010</date1>
</item>
<item>
<date1>November 29, 2009</date1>
</news>
Its displaying the result but not in sorted way..
+3
6 answers
xsl-sortDoesn't "know" how to sort dates. It will use the default to sort the text, although you can specify a numerical sort using the attribute data-type.
There are some tips to solve this problem - add an attribute or change the way the date is output in the source XML, so you need a view that you can sort numerically.
+4
You can try using something like this:
<xsl:template match="/">
<xsl:for-each select="news/item">
<xsl:sort select="xs:date(date1)" order="descending" />
<xsl:value-of select="date1"/>
</xsl:for-each>
</xsl:template>
, XML, - :
<date1 isoValue="20100101">January 1, 2010</date1>
<xsl:sort select="xs:date(date1/@isoValue)" order="descending" />
+4