Xsl

poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008 - 21 déc. 2005 à 12:56
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 21 déc. 2005 à 15:23
bonjour a tous
voila, jai un problème avec mon code xsl, je n'arrive pas faire des boucles imbriquées. J'aimerai arvoir un tableau du style:
dut info1 cm | info1 td1 | info 1 tp1.1|
|_______ | info1 tp1.2 |
| info1 td2 | info1 tp2.1 |
| | info1 tp2.2 |
dut info2 cm | info1 td1 | info 1 tp1.1|
| info1 td2 | info1 tp2.1 |

voila l'arbre ke jai au départ:


<?xml version= "1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="tarbre.xsl" type="text/xsl"?>




- <arbre id ="1">






- <noeud id= " 101 ">






- <donnees idnoeud ="101">






<col name= " niveau_grp ">1</col>





<col name ="nom_grp">INFO</col>





<col name= " lnom_grp ">DUT INFO</col>





<col name ="num_grp">1</col>



</donnees>





- <fils idnoeud= " 101 ">






- <noeud id ="102">






- <donnees idnoeud= " 102 ">






<col name ="niveau_grp">2</col>





<col name= " nom_grp ">INFO1</col>





<col name ="lnom_grp">DUT INFO 1A</col>





<col name= " num_grp ">1</col>



</donnees>





- <fils idnoeud ="102">






- <noeud id= " 103 ">






- <donnees idnoeud ="103">






<col name= " niveau_grp ">3</col>





<col name ="nom_grp">INFO1</col>





<col name= " lnom_grp ">DUT INFO1 CM</col>





<col name ="num_grp">1</col>



</donnees>





- <fils idnoeud= " 103 ">






- <noeud id ="104">






- <donnees idnoeud= " 104 ">






<col name ="niveau_grp">4</col>





<col name= " nom_grp ">1</col>





<col name ="lnom_grp">INFO1 TD1</col>





<col name= " num_grp ">1</col>



</donnees>





- <fils idnoeud ="104">






- <noeud id= " 105 ">






- <donnees idnoeud ="105">






<col name= " niveau_grp ">5</col>





<col name ="nom_grp">1</col>





<col name= " lnom_grp ">INFO1 TP1.1</col>





<col name ="num_grp">1</col>



</donnees>





<fils idnoeud= " 105 " />



</noeud>





- <noeud id ="106">






- <donnees idnoeud= " 106 ">






<col name ="niveau_grp">5</col>





<col name= " nom_grp ">2</col>





<col name ="lnom_grp">INFO1 TP1.2</col>





<col name= " num_grp ">2</col>



</donnees>





<fils idnoeud ="106" />



</noeud>



</fils>



</noeud>





- <noeud id= " 107 ">






- <donnees idnoeud ="107">






<col name= " niveau_grp ">4</col>





<col name ="nom_grp">2</col>





<col name= " lnom_grp ">INFO1 TD2</col>





<col name ="num_grp">2</col>



</donnees>





- <fils idnoeud= " 107 ">






- <noeud id ="108">






- <donnees idnoeud= " 108 ">






<col name ="niveau_grp">5</col>





<col name= " nom_grp ">1</col>





<col name ="lnom_grp">INFO1 TP2.1</col>





<col name= " num_grp ">1</col>



</donnees>





<fils idnoeud ="108" />



</noeud>





- <noeud id= " 109 ">






- <donnees idnoeud ="109">






<col name= " niveau_grp ">5</col>





<col name ="nom_grp">2</col>





<col name= " lnom_grp ">INFO1 TP2.2</col>





<col name ="num_grp">2</col>



</donnees>





<fils idnoeud= " 109 " />



</noeud>
</fils>



</noeud>



</fils>



</noeud>



</fils>



</noeud>





- <noeud id ="110">






- <donnees idnoeud= " 110 ">






<col name ="niveau_grp">2</col>





<col name= " nom_grp ">INFO2</col>





<col name ="lnom_grp">DUT INFO 2A</col>





<col name= " num_grp ">2</col>



</donnees>





- <fils idnoeud ="110">






- <noeud id= " 111 ">






- <donnees idnoeud ="111">






<col name= " niveau_grp ">3</col>





<col name ="nom_grp">INFO2</col>





<col name= " lnom_grp ">DUT INFO 2A CM</col>





<col name ="num_grp">1</col>



</donnees>





- <fils idnoeud= " 111 ">






- <noeud id ="112">






- <donnees idnoeud= " 112 ">






<col name ="niveau_grp">4</col>





<col name= " nom_grp ">1</col>





<col name ="lnom_grp">INFO2 TD1</col>





<col name= " num_grp ">1</col>



</donnees>





- <fils idnoeud ="112">






- <noeud id= " 113 ">






- <donnees idnoeud ="113">






<col name= " niveau_grp ">5</col>





<col name ="nom_grp">1</col>





<col name= " lnom_grp ">INFO2 TP1.1</col>





<col name ="num_grp">1</col>



</donnees>





<fils idnoeud= " 113 " />



</noeud>



</fils>



</noeud>





- <noeud id ="114">






- <donnees idnoeud= " 114 ">






<col name ="niveau_grp">4</col>





<col name= " nom_grp ">2</col>





<col name ="lnom_grp">INFO2 TD2</col>





<col name= " num_grp ">2</col>



</donnees>





- <fils idnoeud ="114">






- <noeud id= " 115 ">






- <donnees idnoeud ="115">






<col name= " niveau_grp ">5</col>





<col name ="nom_grp">1</col>





<col name= " lnom_grp ">INFO2 TP2.1</col>





<col name ="num_grp">1</col>



</donnees>





<fils idnoeud= " 115 " />



</noeud>



</fils>



</noeud>



</fils>



</noeud>



</fils>



</noeud>



</fils>



</noeud>



</arbre>

J'ai donc associé à cet arbre une feuille stylesheet qui récupère les valeurs:

<?xml version ="
1.0"
encoding="
iso-8859-1"
?>
<xsl:stylesheet version="
1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="
html"
/>
<xsl:template match="
/"
>
<table border="
1"
>
<xsl:apply-templates select="
arbre/noeud/fils/noeud/fils/noeud/donnees/col"
/>
<xsl:apply-templates select="
arbre/noeud/fils/noeud/fils/noeud/fils/noeud/donnees/col"
/>
<xsl:apply-templates select="
arbre/noeud/fils/noeud/fils/noeud/fils/noeud/fils/noeud/donnees/col"
/>
</table>
</xsl:template>


<xsl:template match="
col"
>
<xsl:if test="
@name='lnom_grp'"
>
<tr>
<td><xsl:value-of select="
."
/></td>
</tr>
</xsl:if>
</xsl:template>


</xsl:stylesheet>

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 déc. 2005 à 14:08
Hello,

ce n'est pas vraiment le bon forum pour ça...on fait du php ici.
Mais bon, comme il n'y a pas encore de site CS dédié au xml/xsl/xslt etc...

Primo, ton xml me laisse un peu rêveur.
On a du mal à discerner les noeuds.
Mais j'ai l'impression qu'il est déjà organisé comme tu le veux... : dans un noeud, on a des données, puis des fils. Dans ces fils, on a des noeuds et leurs données. Bref ça ressemble déjà à une arborescence. Je n'ai pas pu le copier dans un éditeur xml parce que j'ai la flemme (et pas le temps) de copier coller ton texte et d'enlever les "-" copiés d'IE (on dirait du IE), pour vérifier l'arborescence exacte.

Mais bon, si c'est bien organisé, tu rentres dans un noeud, et tu listes les noeuds-fils qu'il contient.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
21 déc. 2005 à 15:09
Salut,

pour moi, dans ton xls, tu devrais faire s'afficher des et <li> à la place des <tr> et <td>

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 déc. 2005 à 15:23
Ben pas s'il veut un tableau.
Mais, n'ayant que peu de visibilité, là, sur l'arborescence de ses données, je ne suis pas sûr qu'un tableau soit possible...
0
Rejoignez-nous