我想弄清楚執行嵌套的每個&排序的最佳方法。例如,我的XSLT執行以下操作:XSLT嵌套排序/爲每個
選擇節點集。
按日期排序屬性。
執行位置()拉4個節點。
現在,接下來的部分是什麼,我想弄清楚。在步驟3之後,我需要再次按日期屬性排序,但是這次按升序排列......現在數據集被縮小爲4個節點。建議?謝謝您的幫助!!
XSLT:
<xsl:template name="AdmissionsNewsList">
<ul class="stories-list">
<xsl:for-each select="AdmissionsSectionFront/TaxonomyNavigation[@Name='AdmissionsNewsList']/Category/Pages/Page">
<xsl:sort select="@Date" order="descending" />
<xsl:if test="position() < 5">
<!-- NOW THAT THE NODES HAVE BEEN SELECTED, SORTED, AND POSTION LIMIT SET
I NEED TO PERFORM ANOTHER SORT BY DATE (ASCENDING ORDER) HERE ON THE NARROWED DOWN DATA SET -->
<li>
<xsl:choose>
<xsl:when test="normalize-space(@ThumbnailImage)">
<img alt="{@LocalAlternateText}" src="images/{@ThumbnailImage}" />
</xsl:when>
<xsl:otherwise>
<img alt="{@LocalAlternateText}" src="images/News%20Photos/Default.jpg"/>
</xsl:otherwise>
</xsl:choose>
<div>
<h5>
<xsl:value-of select="@Title"/>
</h5>
<br/>
<xsl:apply-templates select="@Abstract"/>
<br/><br/>
<a href="{@URL}" class="full-story">
<xsl:apply-templates select="Page[@Name='Link']/@Target"/>Full Story
</a>
</div>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
注意:這必須是在XSLT 1.0 &使用MSXML 4.0分析器。提前致謝!
不幸的是XSL 1.0沒有太多支持日期數據類型。 – Oded 2010-09-28 19:07:31
好問題(+1)。看到我的答案是一個簡單而合理的解決方案。 :) – 2010-09-28 19:11:44
@Oded:這個問題更一般,有一個很好的通用解決方案。至於日期數據類型,似乎'@ Date'屬性的值(雖然沒有顯示)是這樣的,簡單的字符串排序對它們正確工作(例如yyyy/mm/dd) – 2010-09-28 19:14:10