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 :

[XSL] Récupérer la valeur de la valeur d'une variable


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 83
    Par défaut [XSL] Récupérer la valeur de la valeur d'une variable
    Bonjour,

    EDIT : Quelques détails et du code en plus en post #4

    Sous ce titre en apparence tordu se cache un problème qui l'est tout aussi :

    Si j'ai le xsl suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <page>
    <params>
      <name>Dupond</name>
      <firstname>Jean</firstname>
    </params>
    <field>name</field>
    </page>
    Et en xsl, j'aimerais bien récupérer la valeur du champ xml dont le nom est passé dans field, donc pouvoir faire un value-of select sur /page/params/$mavaleurdansfield.

    J'ai tenté avec exsl:node-set, avec des variables en stockant le chemin et la valeur de field dans 2 variables différentes ou dans la même sans succès, je ne récupére que le chemin vers le champ dont je cherche à obtenir la valeur.

    J'ai tenté aussi ceci avec la valeur de field dans la variable $field, sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <xsl:attribute name="value"><xsl:value-of select="*[name() = $field]"/></xsl:attribute>
    Quelqu'un aurait-il déjà rencontré ce cas svp ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    heu... on pourrait avoir le XSLT (ou au moins un bout un peu plus grand, style le template concerné) en entier ^^stp
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 83
    Par défaut
    Voici le xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <page>
    <data>
       <domain>test.tld</domain>
       <name>Dupond</name>
    </data>
    <field>domain</field>
    </page>
    Et la tentative de xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            <xsl:variable name="field"><xsl:value-of select="/page/field"/></xsl:variable>
            <xsl:variable name="path">/page/data</xsl:variable>
            <input type="text">
                <xsl:attribute name="name"><xsl:value-of select="/page/field"/></xsl:attribute>
                <xsl:attribute name="value"><xsl:value-of select="$path/$field"/></xsl:attribute>
            </input>
    Le but étant d'avoir un input avec comme nom "domain" et comme value "test.tld".

    En fait ça doit servir à modifier certains champs donc je passe le nom du champ en paramètre et je crée l'input correspondant avec la valeur actuelle du champ pour que sa modification en soit facilitée.

  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    <xsl:variable name="field"><xsl:value-of select="/page/field"/></xsl:variable>
    <xsl:variable name="path">/page/data</xsl:variable>
    1)Deja on evite ce type d'ecriture quand on ne maitrise pas tres bien le XSLT.Cela produit des Node-fragment, type de variable dont on se passe quand on le peut.
    2) Une chaine de caractère n'est pas un chemin xpath.Il existe des extension proc qui permettent de les evaluer comme telle, mais ce type d'ecriture de XSLT vient en général d'une mauvaise analyse du problème


    une variable on priviligiera
    <xsl:variable name="field" select="......."></xsl:variable>
    ce qui permet par contre, si c'est un node-set, d'effetuer des xpath dessus


    Explique plutot ce que tu voudrais faire

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 83
    Par défaut
    Ca doit servir à modifier certains champs grâce à un template unique donc je passe le nom du champ à modifier en xml et je crée l'input correspondant en xsl avec la valeur actuelle du champ pour que sa modification en soit facilitée.

    Si je veux modifier le champ domain, je passe domain en xml dans <field> et je dois sortir un input ayant pour nom "domain" et pour value la valeur actuelle de domain, qui se trouve dans le xml.

  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Pas encore hyper clair mais quand j'a ce type de pb (en general pour des tris), je connais l'endroit ou cela peut être mais pas forcemment le nom du tag, et c'est lui que je passe en paramètre

    exemple:


    <?xml version="1.0" encoding="UTF-8"?>
    <test>
    <
    a><b>test1</b></a>
    <
    a><c>test2</c></a>
    </
    test>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:param name="T1" select="'b'"></xsl:param><!--valeur par defaut-->
    <xsl:param name="T2" select="'c'">></xsl:param><!--valeur par defaut-->
    <xsl:variable name="affich" select="/test/a/*"></xsl:variable>
    <xsl:template match="/">
    première valeur:<xsl:value-of select="$affich[name()=$T1]"></xsl:value-of><!--test1-->
    seconde valeur:<xsl:value-of select="$affich[name()=$T2]"></xsl:value-of><!--test2-->
    </xsl:template>
    </xsl:stylesheet>
    
    


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 83
    Par défaut
    Je vais regarder ça merci

  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Rien capté

    On dirait que tu as des problèmes avec un node-fragment mais je n'en suis même pas sur

    Je ne comprends pas pourquoi tu nous parle de xsl et nous montre un code XML

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

Discussions similaires

  1. Récupérer une valeur d'un xml dans une variable
    Par FANDENEGI dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/03/2013, 20h41
  2. [XSL]Récupérer les 5 plus petites valeurs de 10 éléments
    Par muad'dib dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/03/2009, 18h04
  3. Réponses: 10
    Dernier message: 20/06/2007, 18h02
  4. Réponses: 3
    Dernier message: 08/12/2005, 02h42
  5. Utiliser la valeur d'un input dans une variable php
    Par megane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/08/2005, 16h02

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