Bonjour,
je voudrais réaliser un template récursif afin de construire un tableau HTML.
Lors de l'appel du template, je passe le nombre de lignes et de colonnes.
Mon problème est que les <tr> et </tr> se trouvent dans 2 xsl:when différents et ça me donne une erreur comme quoi la balise de fermeture ne correspond pas à la balise d'ouverture.
j'ai essayé avec <tr> mais là ça m'affiche carrément le <tr> dans ma page html.
y a t-il un moyen pour résoudre mon problème ?
MERCI D'AVANCE !
Dans mon fichier de templates :
Mon fichier de tests
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <xsl:template name="tabloCorps"> <xsl:param name="nbLignes" >5</xsl:param> <xsl:param name="nbColonnes" >4</xsl:param> <xsl:param name="ligne" >1</xsl:param> <xsl:param name="colonne" >1</xsl:param> <!-- récursivité --> <xsl:choose> <xsl:when test="number($colonne)=1"> <tr> <!-- PB --> </xsl:when> <xsl:when test="number($colonne) < number($nbColonnes)"> </tr> <!-- PB --> <xsl:call-template name="tabloCorps"> <xsl:with-param name="nbLignes" select="10" /> <xsl:with-param name="nbColonnes" select="4" /> <xsl:with-param name="ligne" select="number($ligne +1)" /> <xsl:with-param name="colonne" select="1" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <td> <xsl:value-of select="$nbLignes"/> - <xsl:value-of select="$nbColonnes"/> </td> <xsl:call-template name="tabloCorps"> <xsl:with-param name="nbLignes" select="10" /> <xsl:with-param name="nbColonnes" select="4" /> <xsl:with-param name="ligne" select="$ligne" /> <xsl:with-param name="colonne" select="number($colonne+1)" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <body> <div class="libStatic"> <table border="1"> <xsl:call-template name="tabloCorps"> <xsl:with-param name="nbLignes" select="10" /> <xsl:with-param name="nbColonnes" select="4" /> </xsl:call-template> </table> </div> </body>
Partager