Skocz do zawartości

Galeria xml


pharao

Recommended Posts

Witam serdecznie, chciałbym się was poradzić odnośnie galerii w xml. Jestem bardzo mało doświadczonym programistą XML i XSL więc proszę się nie śmiać :)

Pytanie moje jest następujące. Stworzyłem małą galerię w XML. Za pomocą XSL próbuję stworzyć tabelkę wypełnioną zdjęciami z xml. Niestety wiem tylko jak zrobić to w jednym rzędzie, lub jednej kolumnie (tak jest teraz w załączonym pliku). Czy dałoby się zrobić, i jak to zrobić, by tabelka miała 4 kolumny? Zawsze, niezależnie od ilości zdjęć.

Plik XSL(nie chciał się załączyć):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<xsl:apply-templates/>

</xsl:template>

<xsl:template match="galeria">

<html>

<head>

<style type="text/css">

td { border: 1px solid black; padding: 5px; text-align: center;}

</style>

</head><body>

<table style="border: 1px solid black;">

<xsl:for-each select="zdjecie">

<tr>

<td><xsl:element name="a"><xsl:attribute name='href'>duze/<xsl:value-of select='plik'/>.jpg</xsl:attribute><xsl:element name='img'><xsl:attribute name='src'><xsl:value-of select='plik'/>.jpg</xsl:attribute></xsl:element></xsl:element><br/><xsl:value-of select="opis"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

galeria.xml

Link do komentarza
Udostępnij na innych stronach

Sprawdź poniższy kod, nie jestem pewien czy działa:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;
    &lt;xsl:param name="num-of-cols"&gt;4&lt;/xsl:param&gt;
 &lt;xsl:template match="root"&gt;
     &lt;table border="1"&gt;
         &lt;xsl:for-each select="sth[position() mod $num-of-cols = 1]"&gt;
             &lt;tr&gt;
                 &lt;xsl:for-each select="self::sth | following-sibling::sth[position() &lt; $num-of-cols]"&gt;
                     &lt;td&gt;
                         &lt;xsl:element name="a"&gt;&lt;xsl:attribute name='href'&gt;duze/&lt;xsl:value-of select='plik'/&gt;.jpg&lt;/xsl:attribute&gt;&lt;xsl:element name='img'&gt;&lt;xsl:attribute name='src'&gt;&lt;xsl:value-of select='plik'/&gt;.jpg&lt;/xsl:attribute&gt;&lt;/xsl:element&gt;&lt;/xsl:element&gt;&lt;br/&gt;&lt;xsl:value-of select="opis"/&gt;
                     &lt;/td&gt;
                 &lt;/xsl:for-each&gt;
                 &lt;xsl:if test="count(following-sibling::sth) &lt; $num-of-cols - 1"&gt;
                     &lt;xsl:call-template name="add-empty-cells"&gt;
                         &lt;xsl:with-param name="count" select="$num-of-cols - count(following-sibling::sth) - 1 "/&gt;
                     &lt;/xsl:call-template&gt;
                 &lt;/xsl:if&gt;
             &lt;/tr&gt;
         &lt;/xsl:for-each&gt;
     &lt;/table&gt;
 &lt;/xsl:template&gt;
    &lt;xsl:template name="add-empty-cells"&gt;
        &lt;xsl:param name="count"/&gt;
        &lt;td&gt;-&lt;/td&gt;
        &lt;xsl:if test="$count &gt; 1"&gt;
            &lt;xsl:call-template name="add-empty-cells"&gt;
                &lt;xsl:with-param name="count" select="$count - 1"/&gt;
            &lt;/xsl:call-template&gt;
        &lt;/xsl:if&gt;
    &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś treść z formatowaniem.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Wczytywanie...
×
×
  • Utwórz nowe...