我有以下XSLT
代码:
<xsl:if test="position() mod 7=0 or position()=last()">
//display logic
</xsl:if>
位于foreach
循环中。
问题是,如果总数为8,而排名达到8,则我们将为两个display logic
计算position 7 and position 8 sequentially
我相信解决方法类似于
<xsl:if test="(count(something)=1) or (position() mod 7=0) or (position()=last() and position() mod 7>=2)">
//display logic
</xsl:if>
如果我们在最后一条记录中,此逻辑将确保至少2条记录出现在模数之后,并且在重击模数之前应保证最多6条记录的长度。另外,如果仅存在1条记录,我们还需要运行显示逻辑。
但我不是XSLT专家。直到今晚晚些时候,我才能够测试这种逻辑,所以我认为id方法如此,以查看是否可以得到有关这是否正确方法的答案。
谢谢。
答案 0 :(得分:0)
我猜你想做(!):
<xsl:if test="position() mod 7 = 0 and last() - position() > 1 or position() = last()">
这将确保最后一组至少有2个项目。如果只有一个,它将被附加到上一组,使其成为一组8个项目。
如果您希望有6组,然后是2组,请执行以下操作:
<xsl:if test="position() mod 7 = 0 and last() - position() > 1 or position() mod 7 = 6 and last() - position() = 2 or position() = last()">