2013-03-12 122 views
2

我想按日期/時間降序排序,在XSLT文件中,我已經能夠完成這個大部分,但是,時間部分有點棘手。我按「數字」排序而不是實際的「時間」。例如,我的輸出是:按日期和時間排序XSLT

2013年3月2日上午10:05

2013年3月2日16:28

2013年2月28日17:03

通常情況下,降序意味着10將在該日期之前到達4,但是如果時間到了,情況就不是這樣。我如何能實現任何建議:

2013年3月2日16:28

2013年3月2日上午10:05

2013年2月28日17:03

這裏是我使用的排序:您需要使用data-type="number"的數字相提並論

<xsl:sort select="substring-before(substring-after(substring-after(NoteEnteredOn, '/'), '/'), ' ')" /> <!-- year --> 
<xsl:sort select="substring(normalize-space(NoteEnteredOn),1,2)"/> <!-- month --> 
<xsl:sort select ="substring-after(substring-after(normalize-space(NoteEnteredOn), ' '),' ')"/> <!-- AM/PM--> 
<xsl:sort select="substring-before(substring-after(substring-after(NoteEnteredOn, ' '),' '),':')" /> <!--Hour--> 
<xsl:sort select="substring-before(substring-after(normalize-space(NoteEnteredOn), ':'), ' ')"/> <!--Minute--> 
<xsl:sort select="substring-before(substring-after(NoteEnteredOn, '/'), '/')" /> <!-- Day --> 

回答

2

TS,已經sorts安排在正確的順序,並使用order="descending"

<!-- year --> 
<xsl:sort select="substring-before(substring-after(substring-after(NoteEnteredOn, 
     '/'), '/'), ' ')" order="descending" data-type="number" /> 
<!-- month --> 
<xsl:sort select="substring(normalize-space(NoteEnteredOn),1,2)" 
     order="descending" data-type="number" /> 
<!-- Day --> 
<xsl:sort select="substring-before(substring-after(NoteEnteredOn, '/'), '/')" 
     order="descending" data-type="number" /> 
<!-- AM/PM--> 
<xsl:sort select ="substring-after(substring-after(normalize-space(NoteEnteredOn), 
     ' '),' ')" order="descending" /> 
<!--Hour--> 
<xsl:sort select="substring-before(substring-after(normalize-space(NoteEnteredOn), 
        ,' '),':') mod 12" 
      order="descending" data-type="number" /> 
<!--Minute--> 
<xsl:sort select="substring-before(substring-after(normalize-space(NoteEnteredOn), 
        ':'), ' ')" 
      order="descending" data-type="number" /> 

當然,這將是一個整體容易得多,如果你的數據是在一個排序yyyy-MM-ddTHH:mm:ss格式:)

+0

是的,這將有更好!非常感謝,這會產生正確的結果! – 2013-03-12 19:06:28