Ik zit lekker in de XSL problemen deze week; de volgende!
Ik heb een template wat aan de hand van "aantal" en "start" parameters een aantal dingen uit m'n XML file laat zien. Dit doe ik alsvolgt:
Okay alles goed en wel, dit is nog redelijk rechtoe, rechtaan. Ik roep het template aan:
En check door wat uitvoer even of de juiste index wordt meegegeven (de $start parameter wordt uit de URL gehaald), ook allemaal in orde.
Wat blijkt nu tot m'n grote verbazing; het "displayjob" template laat bij elke $start waarde het eerste XML element altijd zien (het element dat als eerst in de XML file staat). Voer ik bijvoorbeeld start=20 in, dan krijg ik te zien: element 1, element 21, element 22 etc. Het vage is dat dat niet zo is wanneer ik in plaats van $start gewoon 20 invul; dan werkt het ineens wel. Wie weet raad?
Even voor extra duidelijkheid; in het "displayjob" template doe ik dit als check:
En wat krijg je dan als uitvoer met start=1:
start=21
start=41
Dat die eerste ID code afwijkend is ligt trouwens aan de database, dat hoort zo.
Ik heb een template wat aan de hand van "aantal" en "start" parameters een aantal dingen uit m'n XML file laat zien. Dit doe ik alsvolgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <xsl:template name="displayjobs">
<xsl:param name="index"/>
<xsl:param name="displayed"/>
<xsl:if test="/GLKS/JOBLIST/job[$index]">
<xsl:call-template name="displayjob">
<xsl:with-param name="index" select="$index"/>
<xsl:with-param name="displayed" select="$displayed + 1"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$displayed < $displayjobs">
<xsl:call-template name="displayjobs">
<xsl:with-param name="index" select="$index + 1"/>
<xsl:with-param name="displayed" select="$displayed + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template> |
Okay alles goed en wel, dit is nog redelijk rechtoe, rechtaan. Ik roep het template aan:
code:
1
2
3
4
5
6
7
8
9
10
| <xsl:template name="viewlist">
<table class="joblist" border='1'>
<xsl:call-template name="displayjobs">
<xsl:with-param name="index" select="$start"/>
<xsl:with-param name="displayed" select="1"/>
</xsl:call-template>
</table>
</xsl:template> |
En check door wat uitvoer even of de juiste index wordt meegegeven (de $start parameter wordt uit de URL gehaald), ook allemaal in orde.
Wat blijkt nu tot m'n grote verbazing; het "displayjob" template laat bij elke $start waarde het eerste XML element altijd zien (het element dat als eerst in de XML file staat). Voer ik bijvoorbeeld start=20 in, dan krijg ik te zien: element 1, element 21, element 22 etc. Het vage is dat dat niet zo is wanneer ik in plaats van $start gewoon 20 invul; dan werkt het ineens wel. Wie weet raad?
Even voor extra duidelijkheid; in het "displayjob" template doe ik dit als check:
code:
1
2
3
| <xsl:param name="index" /> <xsl:variable name="job" select="/GLKS/JOBLIST/job[$index]"/> test: <xsl:value-of select="$index"/> =ID: <xsl:value-of select="$job/ID"/><br/> |
En wat krijg je dan als uitvoer met start=1:
code:
1
2
3
4
| test: 1 =ID: 605 test: 2 =ID: 456 test: 3 =ID: 455 test: 4 =ID: 458 |
start=21
code:
1
2
3
4
5
| test: 21 =ID: 605 test: 22 =ID: 475 test: 23 =ID: 476 test: 24 =ID: 477 test: 25 =ID: 478 |
start=41
code:
1
2
3
4
5
| test: 41 =ID: 605 test: 42 =ID: 493 test: 43 =ID: 496 test: 44 =ID: 497 test: 45 =ID: 498 |
Dat die eerste ID code afwijkend is ligt trouwens aan de database, dat hoort zo.
[ Voor 62% gewijzigd door jsiegmund op 26-11-2004 17:29 ]