0

複数の製品画像があるかどうかを確認するために、XSLT に for-each ステートメントがあります。私の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>
4

2 に答える 2

1

したがって、複数の画像があるかどうかを確認する必要があります。0 個または 1 個の場合は何も表示せず、複数の場合は最初の 4 個まで表示しますか? ではどうでしょうか

<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を生みます。括弧を使用すると、4 つ以下の画像しか取得できません。括弧を使用しないと、それぞれの親要素productimageの最初の 4 つの子内にあるすべての要素が取得されます。合計で 4 つ以上であること。productimageproductimages

また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ます。

if画像 1 ~ 4 の代わりに画像 2 ~ 5 を表示する場合は、は必要ありません。

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

selectPDF 以外の画像が 2 つ未満の場合、 は何も選択しないためです。

于 2013-10-22T09:01:42.253 に答える