for-each in XSLT for image

时间:2013-10-22 08:50:01

标签: xslt xslt-1.0

我在XSLT中有一个for-each语句,用于检查是否有多个产品图像。如果不止一个,则显示图像。我需要另一个条件,这是我只需要显示4个图像。可以把它包含在我的for-each语句中。现在我的for-each语句就像。

<xsl:for-each select="$extraimages/productimages/productimage[position() &gt; 1  and extension != '.pdf']">
    <li>
        Something to do
    </li>
</xsl:for-each>

2 个答案:

答案 0 :(得分:2)

如果我理解正确:

<xsl:for-each select="$extraimages/productimages/productimage[position() &gt; 1  and position() &lt;= 5 and extension != '.pdf']">
    <li>
        Something to do
    </li>
</xsl:for-each>

答案 1 :(得分:1)

因此您需要检查是否有多个图像。如果有零或一个然后什么都不显示,当有多个时显示(最多)前四个?那怎么样

<xsl:if test="count($extraimages/productimages/productimage) &gt; 1">
  <xsl:for-each select="($extraimages/productimages/productimage)[position() &lt;= 4]">
    <li>something</li>
  </xsl:for-each>
</xsl:if>

如果productimages中有多个$extraimages元素,则括号会有所不同 - 括号中您将获得不超过四个图像,如果没有它们,您将获得全部{{1}在各自productimage父元素的前四个productimage子元素内的元素,总共可能超过四个。

您在问题中的示例中还有一个productimages检查,以便您可以执行类似

的操作
extension

根据<xsl:if test="count($extraimages/productimages/productimage[extension != '.pdf']) &gt; 1"> <xsl:for-each select="($extraimages/productimages/productimage[extension != '.pdf'])[position() &lt;= 4]"> <li>something</li> </xsl:for-each> </xsl:if> 的结构,括号可能也可能不是必需的。

如果您想要显示2-5而不是1-4的图像,那么您不需要$extraimages,它就会变成

if

因为如果少于两张非pdf图片,<xsl:for-each select=" ($extraimages/productimages/productimage[extension != '.pdf']) [position() &gt; 1][position() &lt;= 5]"> <li>something</li> </xsl:for-each> 将根本不会选择任何内容。