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

XSL/XSLT/XPATH XML Discussion :

affectation variables XSL


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 48
    Points
    48
    Par défaut affectation variables XSL
    Bonjour à vous,

    je souhaiterais savoir si il est possible d'affecter la valeur d'une variable javascript à une variable XSL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="maVariable">
             <script language="Javascript"><![CDATA[
                  toto
             ]]></script>
    </xsl:variable>
    J'ai pensé également en utilisatant un namespace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <msxsl:script language="javascript" implements-prefix="NvLogin"><![CDATA[
      var niveau = 10;   
      function setNiveau(nv) {
        niveau = nv;
      }
      function getNiveau() {
        return niveau;
      }
    ]]></msxsl:script>
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="maVariable">
        <xsl:value-of select="NvLogin:getNiveau()" />
    </xsl:variable>
    Donc pour ce qui est du namespace, cela fonctionne, avec la variable niveau (du namespace). Hors, moi je voudrais que niveau soit égal à une variable globale de mon js.
    Quels fonctions ai-je le droit dans le namespace, car les fonctions javascript de base ne sont pas valides...

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    niveau = parent.frames["VarSauvegarde"].monNiveau ;

    Si quelqu'un peut m'aider ... Ce serait vraiment cool!
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    syntaxe sur msxml:
    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
    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/XSL/Format/1.0" version="1.1"  xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:SC="autre" extension-element-prefixes="SC msxml" > 
    <xsl:template match="/"> 
     
                   <xsl:variable name="maVariable">         <xsl:value-of select="SC:resul()"></xsl:value-of> 
                     </xsl:variable> 
    </xsl:template> 
     
             <msxml:script language="JScript" implements-prefix="SC"><![CDATA[ 
             function resul() { 
             var test; 
             test=2; 
                     return test; 
             } 
    ]]></msxml:script> 
    </xsl:stylesheet>
    Maintenant il faut bien comprendre.
    XSLT autorise le javascript pas le dom HTML , donc tout ce qui est document.truc, frame. machin, etc..... on oublie

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 48
    Points
    48
    Par défaut
    Merci mais le problème est qu'on affecte 2 à test. Hors moi je voudrais lui affecter le contenu d'une variable globale javascript.
    Et justement quand je la lui affecte, il ne reconnait pas ma variable globale javascript. exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <msxml:script language="JScript" implements-prefix="SC"><![CDATA[ 
          function resul() { 
             var test; 
             test= maVariableGlobaleJavascript; 
             return test; 
          }
    ]]></msxml:script>

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Ce n'etait qu'un exemple de syntaxe

    si tu avais essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <msxml:script language="JScript" implements-prefix="SC"><![CDATA[ 
    var truc
    truc=3
          function resul() { 
             var test; 
             test= truc; 
             return test; 
          }
    ]]></msxml:script>
    tu aurais vu que ca marchais

    Par contre ta fonction ne pourra prendre comme parametre/variable que:
    - des variables declares et initialisé dans la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <msxml:script language="JScript" implements-prefix="truc"/>
    - Des paramètres qui sont contenu dans le xml utilisé

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 48
    Points
    48
    Par défaut
    donc il est impossible d'affecter le contenu d'une variable javascript à une variable(xsl:variable) ou paramètre(xsl:param) ?

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par Mike35
    donc il est impossible d'affecter le contenu d'une variable javascript à une variable(xsl:variable) ou paramètre(xsl:param) ?
    Si elle n'est pas declaré dans la feuille: non

    Je ne vois pas ce qu'il y a la d'etonnant ? C'est tout le temps le cas.

    Quand tu l'utilise dans du html tu ne peux utiliser que des données qui sont presente dans ton html ou a la limite dans celui que tu as appelé de cette page.
    Quand tu utilise du xslt , tu ne peux utiliser que des valeurs presente dans le xslt ou le xml ou un autre xml appelé par ton xslt

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 48
    Points
    48
    Par défaut
    Je t'explique mon PB.

    Le client rentre son login password et valide.
    Un CGI est envoyé au serveur qui vérifie et traite cette trame. Si login et mot de passe reconnu, il (le serveur) renvoie le fichier XSL, les fichiers XML pour construire la page (du coté du client) et un fichier HTML (caché de 0 pixel dans ma page) comportant des informations (des variables javascript) relatives à la personne authentifiée.
    Et donc pour cela, j'aimerai bien pouvoir acceder à ces variables javascript et d'y construire ma page suivant leurs valeurs.

    Je sais pas si c'est suffisemment clair, mais comment pourrais-je faire alors dans ces cas là si ce n'est pas possible d'affecter une variable js dans une variable xsl ?

    J'ai pensé à ce que le serveur (mon CGI) me construise un fichier xml avec des balises au nom des variable et leur contenu. C'est faisable, mais le souçi c'est que toutes ces informations seront en clair donc visibles !!!

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    exemple d'utilisation des données xml



    mon xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <r>
    <a>truc</a>
    <r>

    mon xslt:

    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
     <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/XSL/Format/1.0" version="1.1"  xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:SC="autre" extension-element-prefixes="SC msxml" > 
    <xsl:template match="/"> 
                      <r>
                      la valeur est:   <xsl:value-of select="SC:resul(r/a)"></xsl:value-of> 
                     </r>
    </xsl:template> 
     
             <msxml:script language="JScript" implements-prefix="SC"><![CDATA[ 
             function resul(machin) { 
             var test; 
             test=machin; 
                     return test; 
             } 
    ]]></msxml:script> 
    </xsl:stylesheet>

    mon resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <r>
    la valeur est: truc
    </r>

  9. #9
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    tu les passe en parametre a ton xslt

    voir ce post
    http://www.developpez.net/forums/vie...=90007&start=3

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 48
    Points
    48
    Par défaut
    merci bien pour ce lien, je vais investiguer.

Discussions similaires

  1. [htm/JavaScript] Pbm affectation variable d'environnement
    Par fab22montpellier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 27/06/2005, 16h09
  2. Réponses: 5
    Dernier message: 12/05/2005, 10h49
  3. Réponses: 10
    Dernier message: 03/05/2005, 21h57
  4. [JSP] [débutant] affectation variable java
    Par RENAULT dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/07/2004, 15h44
  5. Affecter variable champs
    Par pete007 dans le forum ASP
    Réponses: 3
    Dernier message: 20/04/2004, 16h33

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