2013-03-12 120 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