我有一个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 < 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() < 11]">