xslt,按日期排序 - 错误的日期格式,第一天(ddmmyyyy)

时间:2010-01-14 16:25:29

标签: xslt sorting

我想在XSLT 1中对1500个文件的列表进行排序。该列表类似于:

01052003.xls -> (translate to: 1th of May 2003)
25062004.xls -> (translate to: 25th of June 2004)
31032001.xls -> (translate to: 31th of Marts 2001)

我可以按名称进行排序,但由于它们被命名为ddmmyyyy,排序将是错误的。

我可以按这个奇怪的日期以某种方式对文件进行排序吗?

或者我必须找到一个工具,可以根据正则表达式重命名文件夹中的许多文件......

溴。安德斯

2 个答案:

答案 0 :(得分:4)

使用xsl:sort指令,您可以根据子字符串组合多个排序键。一个很好的例子如下:

http://www.xml.com/pub/a/2002/07/03/transform.html

  

......很容易有三种   基于年,月和日的密钥   日期字符串的子字符串:

<xsl:template match="employees">
  <xsl:apply-templates>
    <xsl:sort select="substring(@hireDate,7,4)"/><!-- year  -->
    <xsl:sort select="substring(@hireDate,1,2)"/><!-- month -->
    <xsl:sort select="substring(@hireDate,3,2)"/><!-- day   -->
  </xsl:apply-templates>
</xsl:template>

答案 1 :(得分:1)

逆转呢?

<xsl:for-each select="dates/date">
    <xsl:sort select="substring(., 5, 4)" />
    <xsl:sort select="substring(., 3, 2)" />
    <xsl:sort select="substring(., 1, 2)" />
    <xsl:value-of select="." /><br />
</xsl:for-each>