Salut à tous

je code actuellement un template pour des elements de menu recursifs,

Je souhaite définir un evenement onClick a tous les MenuItem ayant un sous MenuItem pour qu'il affiche(ou cache) les sous elements

Voici le code que j'utilise actuellement (PAs forcement très propre je ne fais du XML que depuis Hier)

Code : 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<xsl:template match="MenuItem">
<xsl:variable name="OnClickMethod"/>
	<xsl:choose>
			<xsl:when test="count(child::MenuItem)>0">
				<SPAN id="{concat(ID,'_plus')}" name="{concat(ID,'_plus')}" OnClick="afficher_cacher('Sub_{ID}');">+</SPAN>
				<xsl:variable name="tempstring">afficher_cacher("Sub_</xsl:variable>
				<xsl:variable name="tempstring2" select ="concat($tempstring,ID)"/>
				<xsl:variable name="tempstring3">');return;</xsl:variable>
				<xsl:variable name="OnClickMethod" select="concat($tempstring2,$tempstring3)"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:variable name="OnClickMethod"></xsl:variable>
			</xsl:otherwise>
	</xsl:choose>
 
	<a href="{Action}" OnClick="{$OnClickMethod}">
		<xsl:choose>
			<xsl:when test="count(ancestor::*)=1">
				<SPAN STYLE="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: blue">
					<xsl:value-of select="Libelle"/>
				</SPAN>
			</xsl:when>
			<xsl:when test="count(ancestor::*)=2">
				<SPAN STYLE="FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: lightblue">
					<xsl:value-of select="Libelle"/>
				</SPAN>
			</xsl:when>
			<xsl:otherwise>
						<xsl:value-of select="Libelle"/>
				</xsl:otherwise>	
		</xsl:choose>
	</a>
	<BR/>
	<UL>
		<DIV id="Sub_{ID}" style="display:block">
			<xsl:apply-templates select="MenuItem"/>
		</DIV>		
	</UL>
 
</xsl:template>

Lorsque j'utilise ce template pour afficher mon XML, le navigateur me dit:
Impossible de définir deux fois la variable ou le paramètre 'OnClickMethod' au sein du même modèle.
Lorsque j'enlève la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:variable name="OnClickMethod"/>
Je n'ai plus le message d'erreur mais un autre qui m'indique:
Impossible de résoudre une référence à une variable ou un paramètre « OnClickMethod ». La variable ou le paramètre ne sont peut être pas définis ou sont absents de la portée
Comment puis faire pour définir au sein de mon xsl:choose une variable à portee globale? Ou comment définir une variable globale sans lui affecter tout de suite une valeur?

J'ai déjà jeté un oeil au post http://www.developpez.net/forums/viewtopic.php?t=243086 et les references associées mais je n'ai rien trouvé de convaincant.


Quelqu'un aurait il une de ce que pourrais utiliser pour palier a ce probleme?

MErci par avance.