我正在尝试按日期/时间降序排序,在XSLT文件中,我已经能够完成这个,但是,时间部分有点棘手。我按“数字”而不是实际的“时间”排序。例如,我的输出是:
2013年3月2日上午10:05
3/2/2013 4:28 pm
2013/2/28 5:03
通常情况下,降序意味着10日将在该日期之前到4,但是到了时间,情况并非如此。关于我如何实现的任何建议:
3/2/2013 4:28 pm
2013年3月2日上午10:05
2013/2/28 5:03
这是我使用的那种:
<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 -->
答案 0 :(得分:2)
您需要对数字部分使用data-type="number"
,按正确的顺序排列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
格式,这将会更容易:)