IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Passer une variable à javascript dans XML


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Passer une variable à javascript dans XML
    Bonjour,

    J'ai développé une application de gestion de tâches (comme celle que l'on peut trouver dans OUTLOOK) multi-utilisateurs pour un intranet.
    Tous les utilisateurs sur cet intranet ont un poste de travail ayant le même kit de logiciels, avec Internet Explorer.
    L'application a été développée en mode client uniquement, c'est à dire sans ressources serveur.

    J'ai utilisé les technologies suivantes :
    - stockage des données dans un fichier XML
    - affichage des enregistrements un par un au travers d'un formulaire (page HTML) et du langage ADO (ActiveX Data Objects), afin de permettre la navigation entre les enregistrements
    - tableaux de synthèse à l'aide de feuilles de style XSL
    - Internet Explorer comme interface clients

    Le formulaire HTML et les feuilles XSL intègrent toutes du javascript, géré chaque fois à l'intérieur du fichier concerné.
    Le fichier XML est "également ouvert" de façon différente dans ma feuille XSL et dans ma page HTML.

    Je voudrais pouvoir faire un lien de ma feuille XSL pour ouvrir ma page HTML directement à un enregistrement précis.

    Je sais afficher le numéro de l'enregistrement dans XSL. J'utilise une variable qui "compte" les enregistrements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="CPT" select="count(preceding::MONCHAMP)"/>
    Cette variable étant ainsi définie dans mon XSL, je n'arrive pas à la rendre disponible dans mes fonctions javascript.
    Je sais aussi poser un lien vers ma page HTML
    J'ai également découvert que dans une feuille XSL il ne semblait pas possible d'appeler une fonction javascript dans une zone HREF...

    Dans mon formulaire HTML, je sais aller à un enregistrement donné avec la commande recordset.move()
    ainsi recordset.move(5) va au 5ème enregistrement (si je suis bien positionné au début de mon fichier)

    Mais ce que je ne sais pas faire, c'est "envoyer" la valeur de CPT définie dans mon XSL vers mon HTML. Pour l'instant, j'ouvre une boite de dialogue avant de quitter l'affichage avec XSL et l'utilisateur est obligé de saisir le numéro de l'enregistrement.

    Enfin, cerise sur le gateau, je voudrais pouvoir afficher le numéro de l'enregistrement en cours sur ma page HTML.

    Sachant que ce que je ne voudrais pas faire, c'est créer un champ CPT dans mon fichier XML...

    Des idées ?
    D'avance remerciements,

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Visiblement, le sujet n'inspire pas grand monde...
    Est ce que si je poste des "bouts" de source, c'est plus facile ?
    Merci

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Si tes XSL génerent des tableaux de synthese en (x)html, tu peux très bien générer dynamiquement dans le javascript
    var t = '<xsl:value-of select="$maVariable"/>'; et t'en servir après.

    Sinon avec un xsl spécifique pour faire ce count depuis ta page html tu fais la transfomation xslt en javascript avec ton xml et récupere la variable.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Citation Envoyé par Morbo
    var t = '<xsl:value-of select="$maVariable"/>';
    J'ai bien essayé, mais j'y suis pas encore arrivé...

    Le point de départ est le fichier XML affiché avec la feuille de style XSL.
    Voilà ce que j'essaie d'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <TABLE border="1">
       <xsl:for-each select="data/record">
          <tr>
          <TD><xsl:variable name="CPT" select="count(preceding::MONCHAMP)"/>
          <A HREF="file:///L:/suivi.html"><xsl:value-of select="$CPT+1"/></A>.
          <A HREF="javascript:var saisie = 3; javascript:alert(saisie);file:///L:/suivi.html;"></TD>
          </tr>
       </xsl:for-each>
    </TABLE>
    J'explique :
    <xsl:variable name="CPT" select="count(preceding::MONCHAMP)"/> me donne la numérotation des enregistrements, et cela marche
    <A HREF="file:///L:/suivi.html"> ouvre tout simplement la page HTML, sans tenir compte de la valeur de CPT
    <A HREF="javascript:var saisie = 3; javascript:alert(saisie);file:///L:/suivi.html;"> ouvre bien un popup et indique 3 (pour la valeur 'saisie'), mais ne fait déjà pas le chainage vers le fichier HTML
    Et si j'écris <A HREF="javascript:var saisie = $CPT; javascript:alert(saisie);file:///L:/MAJsuivi.html;"> ça plante...

    Une fois que j'aurai réglé ce double problème (récupération de la variable + lancement de la page HTML), la suite devrait mieux se passer...

    Merci pour le coup de main.

    Nota : je me suis essayé à une instruction <TD><Input type=button value="Go" onclick="doGo()"></TD> dans le tableau du fichier XSL, pour avoir un bouton et mettre le java derrière, mais ça il ne veut pas non plus

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ca devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A HREF="javascript:var saisie = {$CPT};" ...>...</A>

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Morbo
    Ca devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A HREF="javascript:var saisie = {$CPT};" ...>...</A>
    Excellent ! Merci

    Mais pourquoi la fin de l'instruction, à savoir l'ouverture du fichier html, n'est pas exécutée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A HREF="javascript:..;file:///L:/MAJsuivi.html;">

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    C'est un problème de javascript, l'instruction que tu mets n'en n'est pas une.
    Il faut que tu lui précise qui doit ouvrir cette URL.
    Genre document.location.href='file:///L:/MAJsuivi.html';

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Morbo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.href='file:///L:/MAJsuivi.html';
    Oui, vu : c'est bon !

    Donc j'ouvre maintenant bien mon document file:///L:/MAJsuivi.html

    A l'ouverture de ce document <body onLoad="loadData();PromptMessage();">, j'ai mis l'action java suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function PromptMessage() {
       var saisie = prompt("Aller à l'enregistrement Nr (ou ANNULER pour voir le premier enregistrement) :", saisie)
       if (saisie!=null) {
          data.recordset.move(saisie-1);
          currentRecord = 0;
       }
    Mais en fait je ne récupère pas la valeur de "saisie" qui je viens de définir dans mon XSL (et que j'ai bien ce coup ci ! ). Pourquoi ? Parce que les 2 actions java ne sont pas définies dans le même fichier ?

    Merci

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ouaip exactement, seule solution : passer la variable en parametre du javascript et dans le javascript de la page appellée, faudra analyser la partie "query" de l'url pour extraire le paramètre bon courage :p.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    OK - vu.
    Cela veut dire qu'à l'ouverture de la page HTML, il faut analyser l'URl avec une fonction de type QueryString()
    Je vais regarder ça. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] passer une variable javascript dans python
    Par stoner2008 dans le forum AJAX
    Réponses: 2
    Dernier message: 15/05/2012, 15h52
  2. Passer une variable PHP dans JavaScript
    Par freud dans le forum Langage
    Réponses: 16
    Dernier message: 03/05/2011, 18h51
  3. Réponses: 3
    Dernier message: 26/06/2006, 13h48
  4. [Javascript] Passer une variable javascript en param de page
    Par Psykorel dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/04/2006, 15h04
  5. passage d'une variable javascript dans du html
    Par the_ugly dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/02/2006, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo