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 :

Utiliser une variable "externe" dans une condition xsl


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Utiliser une variable "externe" dans une condition xsl
    Bonjour,

    j'aimerai savoir comment inclure une variable externe (javascript dans mon cas) dans une condition xsl.

    Peut être en passant pas une variable xslt, mais du coup comment assigner ma variable javascript dans<xsl:variable name="id">var javascript</xsl:variable>

    Voici mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var cpt = 0;
    var xMax = map.getBounds().getNorthEast().lat();
     
    <xsl:for-each select="entries/entry">
       <xsl:if test="latitude &lt;= xMax">
            cpt++;
        </xsl:if>
    </xsl:for-each>
    alert(cpt);
    Merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pas compris.

    On ne peut pas mettre de code JavaScript autour de balises XSLT comme si de rien n'était...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    En fait dans mon script je reccupère une coordonnée sur une carte, la variable xMax.
    J'aimerai pouvoir réutiliser cette variable xMax pour trouver dans mon fichier XML les "entries" dont la latitude est inférieure à xMax. mon problème est que je ne sais pas comment intégrer cette variable dans ma condition.
    J'espère avoir été un peu plus clair, merci pour votre aide.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu n'as rien clarifié du tout.

    J'ai dit : on ne peut pas mettre de JavaScript autour de balises XSLT. Alors pourquoi en mets-tu ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Je ne suis pas trop d'accord sur ton affirmation (ou je n'ai pas compris ce qui n'est pas à exclure non plus ). On peut très bien mettre du Javascript autour de balises XSLT, tu peux avoir par exemple (je simplifie) :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function(){
    plot1 = $.jqplot('<xsl:value-of select="$variable1"/>optionsObj);
    });

    non ?
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    A priori non, ça ne semble pas avoir de sens, et des essais simples ne donnent, comme on peut s'y attendre, rien de concluant avec ce code.

    Maintenant, impossible ça n'existe pas en informatique. On peut toujours créer des situations atypiques où ce qui n'a normalement aucun sens, prend un sens.

    En l'occurrence, on peut imaginer une feuille de style XSLT dont le résultat est un document HTML. Ce document pourrait être créé, (ce qui ne serait pas malin à l'aide de XSLT,) avec du JavaScript à l'intérieur. Ce JavaScript pourrait avoir une partie variable (ce qui devient vraiment stupide) et cette partie varierait d'une manière calculable dans le contexte XSLT. On pourrait donc envisager de mettre des balises XSLT au milieu du JavaScript, et si on fait cette bêtise, ne pas avoir la présence d'esprit de séparer le JavaScript du reste avec <xsl:text>.

    Ce qui aurait pour effet qu'on a un template XSLT, qui contient une balise <script>, qui contient du JavaScript, qui contient des balises XSLT. Donc du JavaScript autour de XSLT. C'est possible.
    Mais il a fallu que j'invente une situation grotesque et alambiquée qu'il n'y a aucune raison de deviner a priori, et la manière dont cette situation marche dépend entièrement de quelle est cette situation que j'ai inventée de nulle part.

    Conclusion : on ne peut pas travailler sans savoir comment est-il devenu possible de mettre du JavaScript autour de XSLT.

    L'idée était bien sûr d'expliquer d'abord comment une telle chose est possible, et ensuite de parler du problème.
    En l'occurrence, Dans la situation que j'ai inventée, il devrait être évident que le JavaScript ne peut pas modifier la valeur d'une variable XSLT. Ceci sans même parler du fait qu'une variable XSLT ne devrait jamais changer de valeur, bien que certains moteurs rendent possible de se tirer une balle dans le pied de cette manière.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Je suis d'accord avec ton analyse sur le fond.

    Nous avons eu besoin dans le cadre d'un projet, d'utiliser des appels de variables XSL dans mon javascript inclus lui même dans du XSLT, ce code est parfaitement fonctionnel et tourne actuellement dans un système de "grosse production".
    Nous n'avons pas trouvé d'autres solutions par rapport aux contraintes du projet.

    Comme tu le dis : "on ne peut pas travailler sans savoir comment il est devenu possible de mettre du JavaScript autour de XSLT."
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    tu peux invoquer une transformation xslt en renseignant un paramètre externe.


    L'instruction <xsl:param/> peut être placée en tant qu'enfant direct de l'élément <xsl:stylesheet/>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xsl:stylesheet  version="1.0" 
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:output encoding="UTF-8" indent="yes" method="xml"/>
    	<xsl:param name="mon_param" select="'valeur'"/>
    ......

    pour js je ne sais pas comment ça se passe, voilà un exemple d'invocation en powershell/.Net


    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
     
    #création du processeur xslt
    [System.XML.XSL.XSLCompiledTransform]$transform=new-object -TypeName System.XML.XSL.XSLCompiledTransform
     
    #feuille de style"
    $transformxsl="C:\chemin_fichier_xsl.xsl"
    $objtransformxsl=get-item $transformxsl
     
    #chargement de la feuille de style dans le processeur XSLT
    $transform.Load($objtransformxsl.fullname)
     
    #création du fichier de sortie de la transformation
    [System.Xml.XmlWriter]$xmlwriter=[System.Xml.XmlWriter]::Create("c:\temp.xml")
     
    #ajout de paramètres à la transformation
    [system.xml.xsl.xsltargumentlist]$xslargs= new-object -TypeName system.xml.xsl.XsltArgumentList
    $xslargs.addparam("mon_param","","ma_valeur") 
    $transform.Transform("$formations",$xslargs,$xmlwriter)

    dans ce code mon_param représente la variable externe



    pour l'invocation de scripts dans ta feuille de style xslt (bien que je pense que ce n'est pas ton cas de figure) certains processeurs xslt le permettent (MSXML te permet de faire du . NET dans une feuille de style XSLT dans une template nommé) mais tu perds totalement la portabilité de ta feuille de style d'un processeur à l'autre...

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2014, 10h23
  2. Réponses: 3
    Dernier message: 13/12/2009, 17h04
  3. [MySQL] récupérer dans une boucle chaque information MySQL dans une variable différente
    Par gtenthorey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2007, 22h34
  4. Réponses: 1
    Dernier message: 17/01/2007, 21h52

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