Thomas J.S.: Bildergalerie oder kann XSLT zählen?

Beitrag lesen

Hallo,

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>

-------------------

<xsl:template match="galerie">
 <table border="1">
  <xsl:for-each select="bild[position() mod 5 = 1]">
   <xsl:variable name="last">
    <xsl:apply-templates select=". | following-sibling::bild[position() &lt; 5]" mode="last" />
   </xsl:variable>
   <tr>
    <xsl:apply-templates select=". | following-sibling::bild[position() &lt; 5]" />
    <xsl:if test="substring($last, 1, 1) &lt; 5">
     <xsl:call-template name="make_empty_cells">
      <xsl:with-param name="count" select="5 - substring($last, 1, 1)"/>
     </xsl:call-template>
    </xsl:if>
   </tr>
  </xsl:for-each>
 </table>
</xsl:template>

<xsl:template match="bild">
 <td>
  <img .... />
 </td>
</xsl:template>

<xsl:template match="bild" mode="last">
 <xsl:value-of select="last()" />
</xsl:template>

<xsl:template name="make_empty_cells">
 <xsl:param name="count"/>
 <xsl:if test="$count != 0">
  <td>&#160;</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