Je souhaiterais transformer le contenu d'un fichier xml en tableau sur plusieurs lignes, mais sans devoir spécifier la notion de début ou fin de ligne dans le fichier xml. Le problème, c'est que je ne sais pas comment faire pour ajouter les <tr> et </tr> pour changer de ligne.
Un petit exemple sera peut-être plus simple, voici un fichier xml :
Que je voudrais transformer pour obtenir un résultat égal à ceci :
Mon début de fichier XSLT est le suivant :
Là ça me permet d'ajouter toutes les entrées "section" comme nouvelle colone, ce que je voudrais, c'est maintenant changer de ligne toutes les "nbresectionparligne" colone.
Donc il faudrait que je puisse faire un truc du style :
juste après le début de la boucle, le problème c'est que ce n'est pas possible, vu que l'arbre XML n'est alors plus valide.
Comment puis-je résoudre mon problème ?
Un petit exemple sera peut-être plus simple, voici un fichier xml :
<sections nbresectionparligne="2">
<section>Section1</section>
<section>Section2</section>
<section>Section3</section>
<section>Section4</section>
<section>Section5</section>
<section>Section6</section>
</sections>
Que je voudrais transformer pour obtenir un résultat égal à ceci :
<table>
<tr>
<td>Section1</td><td>Section2</td>
</tr>
<tr>
<td>Section3</td><td>Section4</td>
</tr>
<tr>
<td>Section5</td><td>Section6</td>
</tr>
</table>
Mon début de fichier XSLT est le suivant :
<xsl:template match="/">
<table>
<tr>
<xsl:for-each select="sections/section">
<td>
<xsl:value-of select="." />
</td>
</xsl:for-each>
</tr>
</table>
</xsl:template>
Là ça me permet d'ajouter toutes les entrées "section" comme nouvelle colone, ce que je voudrais, c'est maintenant changer de ligne toutes les "nbresectionparligne" colone.
Donc il faudrait que je puisse faire un truc du style :
<xsl:if test="position() mod ({sections/@nbresectionparligne} + 1) = 0">
</tr><tr>
</xsl:if>
juste après le début de la boucle, le problème c'est que ce n'est pas possible, vu que l'arbre XML n'est alors plus valide.
Comment puis-je résoudre mon problème ?