したがって、複数の画像があるかどうかを確認する必要があります。0 個または 1 個の場合は何も表示せず、複数の場合は最初の 4 個まで表示しますか? ではどうでしょうか
<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
を生みます。括弧を使用すると、4 つ以下の画像しか取得できません。括弧を使用しないと、それぞれの親要素productimage
の最初の 4 つの子内にあるすべての要素が取得されます。合計で 4 つ以上であること。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
ます。
if
画像 1 ~ 4 の代わりに画像 2 ~ 5 を表示する場合は、は必要ありません。
<xsl:for-each select="
($extraimages/productimages/productimage[extension != '.pdf'])
[position() > 1][position() <= 5]">
<li>something</li>
</xsl:for-each>
select
PDF 以外の画像が 2 つ未満の場合、 は何も選択しないためです。