Avatar billede kla Nybegynder
31. marts 2005 - 16:20 Der er 7 kommentarer og
2 løsninger

List af billeder i en table med f.eks 5 bilder pr. række?

Hej mit problem er at jeg gerne vil kunne lave en variable "numberOfPic" som jeg kan tælle op og eller bruge som index...

men dette virker tilsynelade ikke :-(

håber nogen kan hjælpe mig :-)

/Kenneth

<xsl:template match="/"><xsl:param name="numberOfPic" select="0"/>
    <xsl:for-each select="MyLittelFriend/HeadLine">
        <table width="100%">
            <tbody>
                <tr>
                    <th style="filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#ffffff', endcolorstr='#669aff', gradienttype='1')">
                        <xsl:value-of select="@ID"/>
                    </th>
                </tr>
                <xsl:for-each select="image">
                    <xsl:apply-templates select="thumbImageName"/>
                </xsl:for-each>
            </tbody>
        </table>
    </xsl:for-each>
</xsl:template>

<xsl:template match="thumbImageName">
       
      <xsl:param name="numberOfPic" select="$numberOfPic + 1"/>

        <xsl:param name="tekst" />
        <xsl:choose>
            <xsl:when test="$numberOfPic = 5">
          <td><a>
          <xsl:attribute name="href">#</xsl:attribute><xsl:attribute name="onClick">alert('click');</xsl:attribute>
          <img><xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute></img></a>
          </td></tr><tr>
          <xsl:param name="numberOfPic" select="0"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:param name="numberOfPic" select="0"/>
          <td><a>
          <xsl:attribute name="href">#</xsl:attribute><xsl:attribute name="onClick">alert('click');</xsl:attribute>
          <img><xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute></img></a>
          </td>               
            </xsl:otherwise>
        </xsl:choose>
</xsl:template>
Avatar billede milandt Nybegynder
31. marts 2005 - 16:34 #1
<xsl:param name="numberOfPic" select="$numberOfPic + 1"/>

du kan ikke tælle en parameter eller variabel op i xslt så vidt jeg ved.
Avatar billede milandt Nybegynder
31. marts 2005 - 16:35 #2
med andre ord, når den er initieret kan du ikke ændre den.
Avatar billede kla Nybegynder
31. marts 2005 - 16:37 #3
Hva' skal man så gøre i stedet? mit mål er bare at kunne lave flere cell pr. row!
Avatar billede janegil Nybegynder
01. april 2005 - 10:46 #4
Det er her XSLT begynner å bli morsomt. For en variabel kan ikke endres, men du kan opprette en ny variablel med samme navn, men nytt scope og nytt innhold. I scope for gamle variablen har den fortsatt gamle verdien, men i scope for nye variablen har den den nye verdien.

Er du ikke forvirret nå, så har jeg ikke uttrykt meg klart nok.

En gang jeg får lyst, skal jeg skrive et eksempel der man kan telle opp og ned igjen, bare ved å telle opp.
Avatar billede Slettet bruger
02. april 2005 - 01:29 #5
Dette stylesheet skulle kunne få dig igang:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<!-- Antallet af kolonner bestemmer du her: -->
<xsl:variable name="cols-per-row" select="number(5)"/>
   
<xsl:template match="MyLittelFriend/HeadLine">
    <table width="100%">
        <thead>
          <tr>
                <th style="filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#ffffff', endcolorstr='#669aff', gradienttype='1')" colspan="{$cols-per-row}">
                    <xsl:value-of select="@ID"/>
                </th>
            </tr>
        </thead>
        <tbody>
            <xsl:apply-templates select="image" />
        </tbody>
    </table>
</xsl:template>

<xsl:template match="image">
    <xsl:for-each select="thumbImageName[position() mod $cols-per-row = 1]">
        <tr>
            <xsl:apply-templates select=".|following-sibling::thumbImageName[position() &lt; $cols-per-row]" />
        </tr>
    </xsl:for-each>
</xsl:template>

<xsl:template match="thumbImageName">
    <td><a href="#" onclick="alert('click');"><xsl:value-of select="." /><img src="{.}"  /></a></td>
</xsl:template>

</xsl:stylesheet>

/CS
Avatar billede kla Nybegynder
02. april 2005 - 16:58 #6
Ja... det køre da... men jeg får stadig kun en kolone ud af det :-( ... og kan ikke lige se hva' det er der skal til for at den lægger ud til siden...
For mig at se kommer den altid ind i "<xsl:for-each select="thumbImageName[position() mod $cols-per-row = 1]">" og laver derfor altid en <tr></tr> omkring linien?
/kenneth
Avatar billede Slettet bruger
03. april 2005 - 23:45 #7
Så tror jeg det har noget med strukturen i din XML at gøre - jeg har jo gættet mig til den, udfra dit stylesheet... smid lige en stump der viser hvor de ligger.

/CS
Avatar billede Slettet bruger
04. april 2005 - 01:23 #8
Iflg. mit gæt #2 skal du nok erstatte de tre templates med flg.:

<xsl:template match="MyLittelFriend/HeadLine">
    <table width="100%" border="2">
        <thead>
          <tr>
                <th style="filter: progid:dximagetransform.microsoft.gradient(startcolorstr='#ffffff', endcolorstr='#669aff', gradienttype='1')" colspan="{$cols-per-row}">
                    <xsl:value-of select="@ID"/>
                </th>
            </tr>
        </thead>
        <tbody>
            <xsl:for-each select="image[position() mod $cols-per-row = 1]">
                <tr>
                    <xsl:apply-templates select=".|following-sibling::image[position() &lt; $cols-per-row]" />
                </tr>
            </xsl:for-each>
        </tbody>
    </table>
</xsl:template>

<xsl:template match="image">
    <xsl:apply-templates select="thumbImageName" />
</xsl:template>

<xsl:template match="thumbImageName">
    <td><a href="#" onclick="alert('click');" title="position() = {position()}"><xsl:value-of select="." /><img src="{.}" width="10" height="10" /></a></td>
</xsl:template>

/CS
Avatar billede kla Nybegynder
04. april 2005 - 18:10 #9
Sådan nu køre det, så det er bå'dejlig  :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester