[XSLT] besoin d'aide XML -> listes HTML imbriquées
Bonjour,
je suis débutant en XSLT, je dois néanmois réussir a présenter une liste imbriquée HTML à partir d'un fichier XML de cette forme :
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| <?xml version="1.0" encoding="UTF-8"?>
<catalogue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="catalogue.xsd">
<domaines>
<domaine>
<nom><![CDATA[Hi-Fi]]></nom>
</domaine>
<domaine>
<nom><![CDATA[Home-cinéma]]></nom>
</domaine>
</domaines>
<rayons>
<rayon>
<nom><![CDATA[Enceintes]]></nom>
<domaines>
<domaine><![CDATA[Hi-Fi]]></domaine>
<domaine><![CDATA[Home-cinéma]]></domaine>
</domaines>
</rayon>
<rayon>
<nom><![CDATA[Amplificateurs]]></nom>
<domaines>
<domaine><![CDATA[Hi-Fi]]></domaine>
<domaine><![CDATA[Home-cinéma]]></domaine>
</domaines>
</rayon>
<rayon>
<nom><![CDATA[Supports]]></nom>
<domaines>
<domaine><![CDATA[Home-cinéma]]></domaine>
</domaines>
</rayon>
<rayon>
<nom><![CDATA[Ecrans]]></nom>
<domaines>
<domaine><![CDATA[Home-cinéma]]></domaine>
</domaines>
</rayon>
</rayons>
<categories>
<categorie>
<nom><![CDATA[Amplificateurs home-cinéma]]></nom>
<rayons>
<rayon><![CDATA[Amplificateurs]]></rayon>
</rayons>
</categorie>
<categorie>
<nom><![CDATA[Amplificateurs Haute-fidélité]]></nom>
<rayons>
<rayon><![CDATA[Amplificateurs]]></rayon>
</rayons>
</categorie>
<categorie>
<nom><![CDATA[Supports muraux]]></nom>
<rayons>
<rayon><![CDATA[Supports]]></rayon>
</rayons>
</categorie>
<categorie>
<nom><![CDATA[Pieds]]></nom>
<rayons>
<rayon><![CDATA[Supports]]></rayon>
</rayons>
</categorie>
<categorie>
<nom><![CDATA[Ecrans de projections]]></nom>
<rayons>
<rayon><![CDATA[Ecrans]]></rayon>
</rayons>
</categorie>
<categorie>
<nom><![CDATA[Téléviseurs]]></nom>
<rayons>
<rayon><![CDATA[Ecrans]]></rayon>
</rayons>
</categorie>
</categories>
</catalogue> |
Le résultat que j'aurais souhaité avoir en HTML est le suivant :
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
| <ul>
<li>Hi-fi
<ul>
<li>Enceintes</li>
<li>Amplificateurs
<ul>
<li>Amplificateurs home-cinéma</li>
<li>Amplificateurs Haute-fidélité</li>
</ul>
</li>
<li>Supports
<ul>
<li>Supports muraux</li>
<li>Pieds</li>
</ul>
</li>
</ul>
</li>
<li>Home-Cinema
<ul>
<li>Ecrans
<ul>
<li>Ecrans de projections</li>
<li>Téléviseurs</li>
</ul>
</li>
</ul>
</li>
</ul> |
Actuellement j'arrive a faire trois liste séparées mais je n'arrive pas les imbriquer les unes aux autres.
mon xslt actuelle :
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 36 37 38 39 40 41 42 43 44 45 46
| <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csv="http://www.ora.com/XSLTCookbook/namesapce/html">
<xsl:template match="/">
<html>
<head>
<title>Arborescence</title>
</head>
<body BGCOLOR="#FFFFFF">
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="domaines">
<ul>
<xsl:for-each select="domaine">
<li>
<xsl:value-of select="nom" />
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template match="rayons">
<ul>
<xsl:for-each select="rayon">
<li>
<xsl:value-of select="nom" />
</li>
</xsl:for-each>
</ul>
</xsl:template>
<xsl:template match="categories">
<ul>
<xsl:for-each select="categorie">
<li>
<xsl:value-of select="nom" />
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet> |
Pouvez-vous m'éclairer s'il vous plait, car je ne suis pas habitué à la logique XSLT.
Merci mille fois.