按日期排序xml的问题<xsl:sort select=""/>

AB.*_*AB. 3 xml xslt

我正在尝试按日期对我的 xml 进行排序,但它不能像这样运行我的 xml 和 xsl r

<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>
Run Code Online (Sandbox Code Playgroud)

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..
Run Code Online (Sandbox Code Playgroud)

Pau*_*tos 6

你可以尝试使用这样的东西:

<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> 
Run Code Online (Sandbox Code Playgroud)

虽然,如果您可以控制 XML 生成,我还会添加以下内容:

<date1 isoValue="20100101">January 1, 2010</date1>
Run Code Online (Sandbox Code Playgroud)

然后使用

<xsl:sort select="xs:date(date1/@isoValue)" order="descending" />
Run Code Online (Sandbox Code Playgroud)

请注意下面的 xs 命名空间:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)