Bonjour,

j'ai dans mon fichier.xml des elements definit par une même balise et de même attribut.

Je doit creer un menu déroulant par balise de tel sorte à ne traité que les element different.

Fichier.xml:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<musee nom="Sciences Naturelles">
	<salle nom="Mammifère">
		<allee ordre="Artiodactyles">
			<presentoire famille="Cervidés">
				<objet espece="Cerf"/>
				<objet espece="Cerf"/>
				<objet espece="Chevreuil"/>
				<objet espece="Daim"/>
				<objet espece="Caribou"/>
			</presentoire>
                        <presentoire famille="Giraffidés">
				<objet espece="Cerf"/>
				<objet espece="Girafe"/>
				<objet espece="Okapia"/>
			</presentoire>
		</allee>
	</salle>
</musee>

Fichier.xsl
Code xsl : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
    <xsl:template match="/">
        <html><body>
            <xsl:apply-templates select="*" mode="menu"/>
        </body></html>
    </xsl:template>
 
    <xsl:template match="*" mode="menu">
        <br><xsl:value-of select="name()"/> </br> <br> 
            <select name="{name()}">
                <option value="Choix">choisissez</option>
                <xsl:apply-templates select="//*[name()=name(current())]" mode="items"/> <!-- permet d'avoir uniquement les element du même type que la balise -->
            </select></br>
        <xsl:apply-templates select="*[not(preceding::*[position()= last()])]" mode="menu"/> <!-- evite la repetition de menu identique -->
    </xsl:template> 
 
    <xsl:template match="*" mode="items">
        <option name="{@*}"><xsl:value-of select="@*"/></option>
    </xsl:template>   
 
</xsl:stylesheet>

le resultat est donc :

musée:
[Menu déroulant de musée comportant : Sciences Naturelles]
salle:
[Menu déroulant de salle comportant : Mammifère]
allée:
[Menu déroulant de allée comportant : Artiodactyles]
presentoire :
[Menu déroulant de presentoire comportant : Cervidés et Giraffidés]
objet :
[Menu déroulant de presentoire comportant : Cerf, Cerf, Chevreuil, Dain, Caribou, Cerf, Girafe et Okapia]

Je voudrait que le menu objet de comprenne qu'une seul fois l'occurence Cerf, donc qu'il soit :
objet :
[Menu déroulant de presentoire comportant : Cerf, Chevreuil, Dain, Caribou, Girafe et Okapia]

Comment est ce possible?
Je pense que c'est sur <xsl:apply-templates select="???" mode="items"/>