[XSL-T] Affichage d'une liste XML sous forme de tableau HTML

Affichage d'une liste XML sous forme de tableau HTML [XSL-T] - XML/XSL - Programmation

Marsh Posté le 28-04-2006 à 16:53:53    

:hello:  TLM
 
J'ai un petit soucis de XSLT :
 
J'ai des données XML qui se présentent sous la forme d'une liste comme celle-ci :
 
<DMCLIST>
 <DMC></DMC>
 <DMC></DMC>
 <DMC></DMC>
 ...
 <DMC></DMC>
 <DMC></DMC>
 <DMC></DMC>
</DMCLIST>
 
Je voudrais faire afficher ces données sous la forme d'un tableau avec x lignes de 4 colonnes où dans chacune 1 DMC est présent, genre :
 
<TR>
<TD>DMC</TD>
<TD>DMC</TD>
<TD>DMC</TD>
<TD>DMC</TD>
</TR>
 
 
Mon problème principal c'est qu'on n'a pas de fonction for (tout court) mais qu'une for each et donc j'ai pas moyen de parcourir 4 par 4 la liste :/
 
J'ai bidouillé differents trucs mais j'ai rien trouvé de correct...
 
J'ai une solution qui passe sous IE uniquement mais qui n'est pas bien conforme XSL W3C et donc Firefox ne veut pas l'afficher correctement :
 


<xsl:template match="DMC">
 <xsl:if test="position() mod 4=1">
  <xsl:text disable-output-escaping="yes">&lt;TR></xsl:text>
 </xsl:if>
 <TD><xsl:value-of select"."/></TD>
 <xsl:if test="position() mod 4=0">
  <xsl:text disable-output-escaping="yes">&lt;/TR></xsl:text>
 </xsl:if>
</xsl:template>


 
Dans cette façon de faire, le problème réside dans le fait que j'ouvre la balise de ligne (TR) sans la refermer avant la fin du xsl:if;
Et bien sur le problème se reproduit à la fermeture de ligne.
 
J'ai éssayé plusieurs manières après m'être fait refoulé avec cash <TR>.
J'ai par exemple testé <xsl:element name="tr"></xsl:element> mais sans effet (le problème de la balise ouverte mais pas refermée demeure tjrs présent).
Et donc celle-ci, où j'écris < en entité puis TR>, là la page acceptée par IE mais pas par Firefox :/.
 
 :jap: pour votre attention et votre aide.


---------------
Antisocial, tu perds ton sang froid Tu masques ton visage en lisant ton journal Repense a toutes ces années de service Antisocial, bientôt les années de sévices Enfin le temps perdu qu'on ne rattrape plus 4Ñ 7¡ $Ø Ç!ÂL
Reply

Marsh Posté le 28-04-2006 à 16:53:53   

Reply

Marsh Posté le 28-04-2006 à 23:01:16    

KrX a écrit :

Mon problème principal c'est qu'on n'a pas de fonction for (tout court) mais qu'une for each et donc j'ai pas moyen de parcourir 4 par 4 la liste :/


XSLT est un langage récursif, donc pour faire une boucle tu utilises une fonction qui s'appelle elle-même jusqu'à ce que la borne supérieure ait été atteinte.

Reply

Marsh Posté le 30-04-2006 à 13:38:39    

rx__ a écrit :

XSLT est un langage récursif, donc pour faire une boucle tu utilises une fonction qui s'appelle elle-même jusqu'à ce que la borne supérieure ait été atteinte.


Oups, il devrait être trop tard quand j'ai répondu...  :sleep: Je voulais dire "langage fonctionnel" (à priori c'est aussi un langage récursif mais ça c'est une notion de décidabilité). Et donc pour boucler il faut utiliser la récursivité et avoir une fonction (ie. un template) qui s'appelle elle-même.

Reply

Marsh Posté le 30-04-2006 à 16:29:38    

regarde mon code dans les posts recent, ça soit repondre à ton probleme sinon il y a cela
 
http://www.microsoft.com/france/fo [...] tml_1.html
 

Reply

Marsh Posté le 03-05-2006 à 09:13:10    

:jap: tous les 2
 
je vais regarder


---------------
Antisocial, tu perds ton sang froid Tu masques ton visage en lisant ton journal Repense a toutes ces années de service Antisocial, bientôt les années de sévices Enfin le temps perdu qu'on ne rattrape plus 4Ñ 7¡ $Ø Ç!ÂL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed