Во-первых, предполагая, что вы используете выходной формат XML или HTML, я не думаю, что вы можете размещать несопоставленные теги, как в сегменте </tr><tr>
. XSL (в этих режимах) не просто производит вывод строк так, как вы делаете это с вашим Javascript. (Хотя я могу ошибаться.)
То, что вы там делаете, тесно связано с подкачкой; Вы можете посмотреть на скрипты подкачки.
Вот (не проверенное) предложение от меня:
<!-- For every sixth item, starting with the first... -->
<xsl:for-each select="//email/gallery[position() mod 6 = 1]">
<tr>
<!-- Get that item's position... -->
<xsl:variable name="thisPos" select="position()" />
<!-- and select the six (or less) items starting with that position. -->
<xsl:for-each select="//email/gallery[position() >= $thisPos and position() < $thisPos + 6]">
<td><img>
<xsl:attribute name="src">
<xsl:value-of select="gallery-image-location"/>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="gallery-image-alt"/>
</xsl:attribute>
</img></td>
</xsl:for-each>
</tr>
</xsl:for-each>
Да, и IIRC, внутренняя часть цикла также может быть немного укорочена:
<td><img src="{gallery-image-location}" alt="{gallery-image-alt}" /></td>
Эти фигурные скобки помогут сохранить ваше здравомыслие в длинных сценариях.