我想在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,排序将是错误的。
我可以按这个奇怪的日期以某种方式对文件进行排序吗?
或者我必须找到一个工具,可以根据正则表达式重命名文件夹中的许多文件......
溴。安德斯
答案 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>