[英]XSLT nested sort / for-each
我試圖找出執行嵌套for-each和排序的最佳方法。 例如,我的XSLT執行以下操作:
選擇節點集。
按日期排序屬性。
執行position()以拉出4個節點。
現在,下一部分是我想要弄清楚的。 在第3步之后,我需要再次按Date屬性排序,但這次按升序排序...現在數據集縮小到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 Parser。 提前致謝!
而不是 :
<xsl:for-each select=
"AdmissionsSectionFront/TaxonomyNavigation
[@Name='AdmissionsNewsList']/Category/Pages/Page">
<xsl:sort select="@Date" order="descending" />
<xsl:if test="position() < 5">
用途 :
<xsl:variable name="vNewAdmPages" select=
"AdmissionsSectionFront/TaxonomyNavigation
[@Name='AdmissionsNewsList']/Category/Pages/Page">
"/>
<xsl:for-each select="$vNewAdmPages">
<xsl:sort select="@Date" order="ascending" />
<xsl:if test="position() > count($vNewAdmPages) -5">
通過這種方式,您需要單一排序並直接獲得感興趣的五個節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.