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 :

[XSLT] transmettre un paramètre avec comme valeur une expression XPath


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut [XSLT] transmettre un paramètre avec comme valeur une expression XPath
    Bonjour,

    J'essaie de faire deux apply-templates sur une requete XPath, en transmettant des arguments pour avoir des résultats différents selon l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:apply-templates select="xft:Amounts/xft:Amount">
       <xsl:with-param name="textName" select="'toto'"/>
       <xsl:with-param name="exprXPath" select="'@Quantity'"/>
    </xsl:apply-templates>
     
    <xsl:apply-templates select="xft:Amounts/xft:Amount">
       <xsl:with-param name="textName" select="'titi"/>
       <xsl:with-param name="exprXPath" select="'@Amount'"/>
    </xsl:apply-templates>
    Au niveau du template qui va matcher, j'aimerais créer un certain élément Text Name dont la valeur de l'attribut sera la valeur du paramètre textName et lui dire de faire un apply-templates sur un certain noeud décrit par une expression XPath (donné au niveau du paramètre exprXPath)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <xsl:template match="xft:Amount" mode="amount">
             <xsl:param name="textName"/>
             <xsl:param name="exprXPath"/>
             <Text Name="{textName}">
                <xsl:apply-templates select="{$exprXPath}"/>
             </Text>
        </xsl:template>
    Mais j'ai une erreur XSL quand j'essaie de le faire comme ca.

    Une idée?

    Merci :-)

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    les paramètres, tout comme les variables, doivent être préfixés par un $ dans les expressions où ils apparaissent.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    Désolé, c'est une faute de frappe dans le forum, mais j'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <xsl:template match="xft:Amount">
            <xsl:param name="textName"/>
            <xsl:param name="exprXPath"/>
            <Text Name="{$textName}">
                <xsl:apply-templates select="{$exprXPath}"/>
            </Text>
        </xsl:template>
    au niveau du template qui matche.

    Voilà mon erreur XSL: "Invalid character ({) in expression {$exprXPath}"

    Et si j'enlève les "{}", ca me donne comme erreur : "The value is not a node-set"

    Ces erreurs se situent sur la ligne contenant "<xsl:apply-templates select="{$exprXPath}"/>".

    Merci

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    J'étais resté sur cette première erreur, je n'avais pas vu la suivante... Les accolades sont effectivement d'une part de trop dans l'attribut select d'un apply-templates, et d'autre part il n'est pas possible en XSLT d'évaluer dynamiquement une expression XPath contenue dans une chaîne. Il va falloir revoir la conception générale de ton code...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Ha ok.

    Merci :-)

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Lien hypertexte avec comme adresse une cellule
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/01/2009, 12h37
  3. Voir la requete paramétrée avec les valeurs des paramètres
    Par Jdubernat dans le forum Accès aux données
    Réponses: 4
    Dernier message: 27/10/2008, 18h35
  4. TextBox avec comme valeur 0
    Par BRUNO71 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/04/2008, 22h07
  5. Réponses: 5
    Dernier message: 25/11/2007, 19h32

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