5

我正在尝试查看是否可以在通过多个节点的 XSL 文件中设置 for-each 循环,但我想这样做,以便只返回前 3 个结果,例如

<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 个最高分并返回这些节点以显示信息而不是排序完成所有循环后的结果。我确信有一种简单的方法可以在不使用模板的情况下实现这一点,因此我们将不胜感激任何提示。

4

1 回答 1

5

利用

<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>
于 2013-09-17T14:42:25.647 回答