[XPath] Afficher données en colonnes avec bris
Bonjour à tous,
J'utilise une partie de la solution exposée dans le défi de septembre 2004 pour afficher les données de mon fichier xml en colonnes. Supposons que j'ai le fichier xml suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<fichiers>
<fichier nom="fic1"/>
<fichier nom="fic2"/>
<fichier nom="fic3"/>
<fichier nom="fic4"/>
<fichier nom="fic5"/>
<fichier nom="fic6"/>
<fichier nom="fic7"/>
<fichier nom="fic8"/>
<fichier nom="fic9"/>
<fichier nom="fic10"/>
<fichier nom="fic11"/>
</fichiers>
|
J'applique la transformation suivante :
Code:
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 34 35
|
<xsl:template match="/">
<html>
<body>
<table border="1">
<xsl:for-each select="//fichier[position() mod ($M * $C) = 1]">
<tr>
<xsl:for-each select=".|following-sibling::fichier[position() mod $M = 0 and position() < $M * $C]">
<td>
<xsl:for-each select=".|following-sibling::fichier[position() < $M]">
<xsl:value-of select="@nom"/><br/
</xsl:for-each>
</td>
</xsl:for-each>
<xsl:if test="position() = last()">
<xsl:call-template name="cellules_vides">
<xsl:with-param name="nb" select="$C - ceiling(count(.|following-sibling::fichier) div $M)"/>
</xsl:call-template>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
<xsl:template name="cellules_vides">
<xsl:param name="nb"/>
<xsl:if test="$nb >= 1">
<td/>
<xsl:call-template name="cellules_vides">
<xsl:with-param name="nb" select="$nb - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template> |
J'aimerais pouvoir insérer un bris avant le 11e noeud, le 22e noeud, etc. et y insérer du texte afin d'obtenir quelque chose comme ça :
fic1 fic2
fic3 fic4
...
fic9 fic10
blabla
fic11 fic12
...
Merci à l'avance
iDaaX
:D