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:
Lorsque j'enlève la ligneImpossible de définir deux fois la variable ou le paramètre 'OnClickMethod' au sein du même modèle.
Je n'ai plus le message d'erreur mais un autre qui m'indique:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:variable name="OnClickMethod"/>
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?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
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 unede ce que pourrais utiliser pour palier a ce probleme?
MErci par avance.
Partager