Bonjour,
J'ai un petit problème, je viens de commencer a faire du xsl et suis nouvelle, j'écris une feuille de style pour afficher un document xml qui contient des infos hiérarchisées:
Ensemble de règles
Règles
Conditions
Actions
J'affiche le tout en html sauf les actions qui doivent être cachées (modulo le clic sur le bouton afficher/masquer)
J'ai écrit en tête de mon xsl une fonction:
En dessous le template que je vais utiliser:
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 <head> <script language="JavaScript"> <xsl:comment><![CDATA[ function showActions(bouton, id){ var div = document.getElementById(id); if(div.style.display=="none"){ div.style.display = "block"; bouton.innerHTML = "Masquer"; } else { div.style.display = "none"; bouton.innerHTML = "Afficher"; } } ]]></xsl:comment> </script> </head>
En résultat, à chaque fois que j'appuie sur Afficher/Masquer, j'ai droit à un déroulement pour la première règle seulement! J'ai compris en farfouillant les forums que c'est surement l'id qui est inchangée à chaque nouveau div, comment puis je "contourner" ça? J'ai essayé class mais ça ne marche pas mieux, au contraire ça me donne des erreurs sur la page. Quelqu'un pourrait m'aider sur comment faire s'il vous plait?
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 <!-- ****************** Voila le template pour l'affichage des regles, il est recursif **************** --> <xsl:template name="ruleDetail"> <blockquote> <span> <font face="Arial" size="2"><b> <xsl:attribute name="id"><xsl:value-of select="@name"/></xsl:attribute> <xsl:value-of select="@name"/> </b></font><br/> </span> <span><font face="Arial" size="2"><u>Conditions:</u></font></span> <pre style="margin-top: 0; margin-bottom: 0"><font size="2"><xsl:value-of select="conditions"/></font></pre><br/> <!--J'utilise une variable action_id qui est sensee etre recreee par generate-id() a chaque appel du template, soit une fois par regle --> <xsl:variable name="actions_id" select="generate-id()"/> <span><font face="Arial" size="2"><u> Actions: </u></font></span> <!-- Paragraphe a afficher/masquer, change pour chaque regle --> <div id="$actions_id" style="display: none"> <pre style="margin-top: 0; margin-bottom: 0"><font size="2"><xsl:value-of select="actions"/></font></pre> </div> <button type="button" onclick="showActions(this,'$actions_id');" style="width:80px">Afficher</button> <xsl:for-each select="rules/rule"> <xsl:call-template name="ruleDetail"/> </xsl:for-each> </blockquote> </xsl:template>
Merci!
Partager