[js / xsl] passer une variable js dans une instruction xsl

cs_ounours Messages postés 2 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 12 avril 2007 - 12 avril 2007 à 09:29
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 12 avril 2007 à 11:07
Bonjour,

Je réalise une aide à intégrer dans un intranet. Cette aide doit être consultable avec et sans Flash Player, aussi j'ai choisi de créer un xml unique alimentant un fichier Flash et un xsl, afin de simplifier la maintenance. Tout se passe bien avec le Flash, mais j'ai un problème avec le xsl.

Mon objectif :
Afficher un menu avec les différentes étapes, fonctionnant comme des boutons.
Au clic sur l'une d'elle, récupérer son id, et afficher le contenu correspondant.
Le tout toujours dans le même page (qui se recharge, bien sur).

Mes contraintes :
Pas d'intégration possible dans un fichier php, aucune modification n'étant possible sur le serveur.
Tout doit donc se passer côté client.
Une seule fenêtre, donc pas de lien vers différentes pages spécifiques à chaque étape.

Mon problème :
J'arrive à transmettre l'id de l'étape (@id) cliquée via une fonction javascript (itemClic).
Mais dans cette même fonction, je voudrais récupérer le type de l'étape correspondante.
Hors, l'instruction marche bien, mais pas avec la variable : quelque soit l'étape cliquée, le titre est toujours celui du premier nœud.

Jusqu'à maintenant je ne travaillais le xml qu'avec Flash, aussi la solution que j'ai trouvée n'est sans doute pas la meilleure.
S'il existe d'autre façon de transmettre une variable en restant côté client, je suis preneur !

Pour mieux comprendre, je vous joins ensuite les bouts essentiels du xsl et du xml, ainsi que l'affichage obtenu actuellement.

Je vous remercie pour vos conseils.
Bonne journée !
lilian

Fichier xsl :

<script type="text/javascript">

    function itemClic(id) {
        document.write('Id : ' +id +' Titre : <xsl:value-of select="aide/etape[' +id +']/titre_etape"/>');
    }   
</script>

<xsl:for-each select="aide/etape">

    <xsl:value-of select="titre_etape"/>
     

</xsl:for-each>

Arborescence simplifiée du fichier xml :

    <etape id="x">
        <titre_etape>
        <contenu>
        ...

Affichage actuel, exemple avec l'étape 3 cliquée :

Id : 3 Titre : titre de l'étape 1

3 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 avril 2007 à 10:50
Bonjour,

je n'ai pas compris ça du tout pour le xml,xsl et son utilisation dans
    un langage ( javascript, php... ). mais peut-être me trompe-je...

le XML a été créé pour structurer de l'information. Il ne fait rien d'autre.
le XSL est un langage qui transforme le XML en Html ( un peu plus ).
pas question de javascript la dedans, enfin, à ce niveau là.

le javascript est dans le html, il peut exploiter xml+xsl bien sûr
    ( j'ai mis un exemple d'utilisation ici ).

pas sûr qu'on puisse faire comme tu sembles l'indiquer.
mais je n'ai peut-être pas compris, ou ton problème ou le xml+xsl...

<hr />


Cordialement    Bul     [mon Site]     [M'écrire]



<hr />
0
cs_ounours Messages postés 2 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 12 avril 2007
12 avril 2007 à 10:57
bonjour,

en fait mon souci, c'est que j'ai deux applis : une Flash et une html, suivant la configuration de l'utilisateur. j'utilise donc le xml pour pouvoir appeler mes contenus aussi bien depuis Flash que depuis le html.
mon problème vient de la transmission de variable impossible dans le xsl (je ne peux pas faire de transformation côté serveur) : pour le résoudre, j'ai utilisé le javascript.
je suis en train d'essayer avec un tableau javascript pour tout stocker et ensuite appeler le contenu correspondant au clic.

je sais que ce mélange n'est pas forcèment le meilleur, mais c'est le seul que j'ai trouvé au vu de mes contraintes...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 avril 2007 à 11:07
>>je sais que ce mélange n'est pas forcèment le meilleur

    on fait comme on veut et souvent comme on peut...

    mais je récapépète, à mon humble avis, si j'ai compris le xml/xsl :

        le XML a été créé pour structurer de l'information. Il ne fait rien d'autre.
        le XSL est un langage qui transforme le XML en Html ( un poil  plus ).
            pas de javascript là-dedans.



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0
Rejoignez-nous