29. oktober 2007 - 08:13Der er
3 kommentarer og 1 løsning
Opret tæller. brug af tæller og nustilling af tæller.
Jeg læser ud fra en side med sectioner hvor der er 2 forskellige typer. En med sektioner der fylder 100% i breden og en med sektioner som er 33% i breden og så er der 3 ved siden af hinanden. Efter de forskellige sektioner skal der så være en splitter gif.
Problemet er så at jeg ikke kan finde ud af at lave en tæller i XSL der kan tælle hvornår sektionen med type = 1 har kørt 3 gange og så udskrive giffen og nulstille tælleren igen.
Jeg har lavet en udsnit af koden herunder.
<xsl:for-each select="sections/section[position() > 1]"> <xsl:if test="type = 0"> <div class="teasertype0" id="count{count}"> Html.... </div> <img src="gfx/splitter_horizontal.gif"/> </xsl:if> <xsl:if test="type = 1"> <div class="teasertype1" id="count{count}"> Html.... </div> Her vil jeg gerne have en splitter når denne type = 1 har kørt 3 gange i streg </xsl:if> </xsl:for-each>
Du skal ikke bruke noen teller, du skal teste på om position() mod 3 = 0 eller lignende.
Du skal også komme ut av uvanen med for-each. XSLT-programmering er fundamentalt annerledes en Java og Visual Basic og FORTRAN og COBOL og sånt. Ikke nødvendigvis bedre, men VELDIG annerledes. Ikke lenk loops og if/then/else. Tenk pattern matching.
Så du skal heller bare ha én selcet på section[position() mod 3 = 2] og en annen select på section[position() mod 3 <> 2]
Jeg kan jo ikke bruge position da jeg ikke ved om der har været 4 type = 0 før der kommer 3 type 1 i streg. Derfor skal der i type = 1 tælles op hver gang.
Som jeg før har svaret virker dette kun hvis der er 1 type. Jeg har selv fundet en løsning hvor jeg laver en funktion som kaldes hver gang denne type er der og den returnere så sig selv + 1 og når den kommer til 3 så nulstilles den.
Synes godt om
Ny brugerNybegynder
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.