Nochmal,
ich versuche gerade per XSLT eine Bildergalerie zu realisern. Die thumbnails sollen also in einer Tabelle mit zb. 5 Spalten angeordnet werden - mir ist nur gerade völlig unklar, wie ich nach genau 5 Bildern eine neue Zeile beginne.
Kann mir wer weiterhelfen?
Sagen wir, das XML sieht in etwas so aus:
<galerie>
<bild ... ></bild>
<bild ... ></bild>
<bild ... ></bild>
...
</galerie>
Blöd wie ich bin ...
Es geht ja auch einfacher!:
---------------
<xsl:template match="galerie">
<table border="1">
<xsl:for-each select="bild[position() mod 5 = 1]">
<tr>
<xsl:apply-templates select=". | following-sibling::ALBUM[position() < 5]" />
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="bild">
<td>
<xsl:if test="(position() = last()) and (last() < 5)">
<xsl:attribute name="colspan">
<xsl:value-of select="6 - last()" />
</xsl:attribute>
</xsl:if>
<img ... />
</td>
</xsl:template>
------------------------
oder wenn du tatsächlich leere Zellen (td) schreiben willst:
------------------------
<xsl:template match="galerie">
<table border="1">
<xsl:for-each select="bild[position() mod 5 = 1]">
<tr>
<xsl:apply-templates select=". | following-sibling::bild[position() < 5]" />
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="bild">
<td>
<img ... />
</td>
<xsl:if test="(position() = last()) and (last() < 5)">
<xsl:call-template name="make_empty_cells">
<xsl:with-param name="count" select="5 - last()"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="make_empty_cells">
<xsl:param name="count"/>
<xsl:if test="$count != 0">
<td> </td>
<xsl:call-template name="make_empty_cells">
<xsl:with-param name="count" select="$count - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
----------------------
Grüße
Thomas