2010-01-14 68 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