所以你需要检查是否有多个图像。当有零或一时什么都不显示,当有多个时显示(最多)前四个?那么怎么样
<xsl:if test="count($extraimages/productimages/productimage) > 1">
<xsl:for-each select="($extraimages/productimages/productimage)[position() <= 4]">
<li>something</li>
</xsl:for-each>
</xsl:if>
如果有多个productimages
元素,括号会有所不同$extraimages
- 使用括号,您将获得不超过四个图像,没有它们,您将获得各自父元素productimage
的前四个子元素中的所有元素,这可能总共超过四个。productimage
productimages
您还可以extension
在问题中的示例中进行检查,以合并您将执行类似的操作
<xsl:if test="count($extraimages/productimages/productimage[extension != '.pdf']) > 1">
<xsl:for-each select="($extraimages/productimages/productimage[extension != '.pdf'])[position() <= 4]">
<li>something</li>
</xsl:for-each>
</xsl:if>
同样,根据 . 的结构,括号可能需要也可能不需要$extraimages
。
如果你想显示图像 2-5 而不是 1-4 那么你不需要if
,它就变成了
<xsl:for-each select="
($extraimages/productimages/productimage[extension != '.pdf'])
[position() > 1][position() <= 5]">
<li>something</li>
</xsl:for-each>
因为select
如果非 pdf 图像少于两个,则根本不会选择任何内容。