xml – 限制for-each循环XSL的排序结果数

我试图看看是否有可能在一个XSL文件中有一个for-each循环设置,该文件通过许多节点,但我想让它只返回前三个结果,例如

<course>
<unit>
    <result>80</result>
</unit>
<unit>
        <result>77</result>
</unit>
<unit>
        <result>96</result>
</unit>
<unit>
    <result>69</result>
</unit>
</course>

然后使用类似于以下的for-each循环:

<xsl:for-each select="/course/unit">
<xsl:sort select="result" data-type="number" order="descending"/>
<xsl:value-of select="result"/>
</xsl:for-each>

但问题是,如果我做了类似的事情:
< xsl:for-each select =“/ course / unit [position()& lt; = 3]”>
它将抓取前3个节点,然后对它进行排序,这不是我需要的,我希望它获得3个最高标记并返回这些节点以显示信息,而不是在它们经历了所有循环后对结果进行排序.我确信有一种简单的方法可以在不使用模板的情况下实现这一点,因此任何提示都将非常受欢迎.

解决方法

使用

<xsl:for-each select="/course/unit">
<xsl:sort select="result" data-type="number" order="descending"/>
  <xsl:if test="position() &lt;= 3">
    <xsl:value-of select="result"/>
  </xsl:if>
</xsl:for-each>

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念