如何在 XSLT 中循环使用特定条件的前 10 个元素?



我有一个XML,假设item有100个元素。 现在我想在具有特定条件的前 10 个项目上进行循环。

条件 for 循环可能是这样的:

<xsl:for-each select="//z:item[@promoted='true' and @prio='true']"> ... </xsl:for-each>

如何仅处理前 10 个元素?

一个简单的解决方案是这样的:

<xsl:for-each select="//z:item[@promoted='true' and @prio='true']"> <xsl:if test="position &lt; 11"> ... </xsl:if> </xsl:for-each>

但是,这样做的缺点是循环针对所有 10'000 个项目运行。 如何使 for 循环包含条件"仅前 10 个",以便循环实际上只遍历前 10 个项目?

满足条件的前 10 个:

//z:item[@promoted='true' and @prio='true'][11 > position()]

从前 10 个只有那些符合条件的人

//z:item[11 > position()][@promoted='true' and @prio='true']

您可以将其作为 XPATH 谓词的一部分,例如:

<xsl:for-each select="//z:item[@promoted='true' and @prio='true'][position() &lt; 11]">

最新更新