按日期和时间排序XSLT

按日期和时间排序XSLT,xslt,Xslt,我正在尝试在XSLT文件中按日期/时间降序排序,我在大部分情况下都能做到这一点,但是,时间部分有点棘手。我是按“数字”而不是实际的“时间”排序的。例如,我的输出是: 2013年3月2日上午10:05 2013年3月2日下午4:28 2013年2月28日下午5:03 通常情况下,降序意味着10将在该日期出现在4之前,但说到时间,情况并非如此。关于如何实现以下目标的任何建议: 2013年3月2日下午4:28 2013年3月2日上午10:05 2013年2月28日下午5:03 以下是我使用的类型: &

我正在尝试在XSLT文件中按日期/时间降序排序,我在大部分情况下都能做到这一点,但是,时间部分有点棘手。我是按“数字”而不是实际的“时间”排序的。例如,我的输出是:

2013年3月2日上午10:05

2013年3月2日下午4:28

2013年2月28日下午5:03

通常情况下,降序意味着10将在该日期出现在4之前,但说到时间,情况并非如此。关于如何实现以下目标的任何建议:

2013年3月2日下午4:28

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   -->

您需要对数字部分使用
数据类型=“number”
,将
排序
按正确顺序排列,并使用
顺序=“降序”



当然,如果您的数据是可排序的
yyyy-MM-ddTHH:MM:ss
格式:)

是的,那会更好!非常感谢,这将产生正确的结果!
<!-- 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" />