2010-01-14 69 views
1

我想在XSLT 1排序的1500文件的列表,该列表是类似于:XSLT,按日期排序 - 错误的日期格式,第一天(DDMMYYYY)

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排序将是错误的。

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

或者我将不得不寻找一个工具,可以基于正则表达式的文件夹重命名中的许多文件......

溴。 Anders

回答

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> 
+0

谢谢。在允许的情况下不知道多重排序。这将做到这一点。 – Tillebeck 2010-01-14 23:38:51

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> 
+0

+1 - AFAICS,您的解决方案是正确的。接受的不是。 – Tomalak 2010-01-15 09:18:03