2

XSLTファイルで日付/時刻の降順でソートしようとしていますが、ほとんどの場合これを達成できましたが、時刻の部分は少しトリッキーです. 実際の「時間」ではなく「番号」でソートしています。たとえば、私の出力は次のとおりです。

2013 年 3 月 2 日 午前 10 時 5 分

2013/3/2 16:28

2013 年 2 月 28 日午後 5 時 3 分

通常、降順は、その日付で 10 が 4 より前になることを意味しますが、時間になると、そうではありません。どのように私が達成できるかについての提案:

2013/3/2 16:28

2013 年 3 月 2 日 午前 10 時 5 分

2013 年 2 月 28 日午後 5 時 3 分

これが私が使用したソートです:

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

1 に答える 1

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形式であれば、これはずっと簡単になります:)

于 2013-03-12T13:45:47.123 に答える