在 XSLT 中为图像提供每个



>我的 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>
如果我

理解正确:

<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>

所以你需要检查是否有不止一张图片。 当有零或一个时什么都不显示,当有多个时,然后显示(最多)前四个? 那怎么样

<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>

如果$extraimages中有多个productimages元素,则括号会有所不同 - 使用括号,您将获得不超过四个图像,如果没有它们,您将获得所有productimage元素,这些元素位于其各自productimages父元素的前四个productimage子元素中,总共可能超过四个。

您还有一个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>

同样,括号可能是必需的,也可能不是必需的,具体取决于$extraimages的结构。

如果你想显示图像 2-5 而不是 1-4,那么你不需要if,它只是变成了

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

因为如果非 PDF 图像少于两个,select将根本不选择任何内容。

相关内容

  • 没有找到相关文章