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 :

Interpréter un xsl:variable contenant une expression xpath


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Interpréter un xsl:variable contenant une expression xpath
    Bonjour à tous

    Voici la situation : j'ai un XML initial et un XSL s'appuie dessus. Par exemple, à un endroit dans l'XML, j'ai un attribut test qui contient 'false()'. (En fait, je pourrai avoir n'importe quel type d'expression dedans, tant que celui-ci renvoie un booléen)

    Je le récupère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <xsl:variable name="expr" select="@test"/>
    Maintenant, je voudrais pouvoir interprêter ce que contient $expr pour faire ce que je veux, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="$expr">
    ...
    </xsl:if>
    Sauf que là, ça vérifie l'existence de la variable string "$expr", or je voudrais interprêter la valeur de "$expr".

    Auriez-vous une solution ?


    NB 1 : je n'ai pas réussi à faire fonctionner en utilisant des accolades <xsl:if test="{$expr}">

    NB 2 : le cas du "false()" c'est juste pour faire des cas simples, une comparaison du style <xsl:if test="$expr='false()' "> ne me conviendrait pas...

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Après une "très brève" recherche (à peu près toute la journée ), j'ai enfin une solution.

    Dans mon @test, j'ai l'expression que je désire évaluer, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xpath test="boolean($p1//steps)" />
    Et je l'évalue de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="expr1" select="@test"  />
    <xsl:variable name="p1" select="blablabla"  />
    	<xsl:variable name="expr" select="saxon:evaluate($expr1)" as="xs:boolean" />
    Remarques :
    1/ je teste donc s'il existe bien des "steps" dans la variable $p1, qui est donc "blablabla" dans mon XML.
    2/ le nom de variable "$p1" n'est pas un nom choisi au hasard, il faut donner un nom sous la forme "$pX" avec X un nombre pour que l'on puisse appeler la variable. Une variable "$instance" générera une erreur "la variable $instance n'a pas été déclaré"... Même si elle l'a été

    Et pour info, mes recherches m'ont amené d'abord vers exslt.org, puis vers Xalan/, pour finir par la solution saxon:evaluate().

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bon, en fait petite erreur, ça ne marchait pas totalement.
    Suffisamment pour que tout ne plante pas et donne un résultat, mais en donnant un résultat faux...


    Donc je continue sur la façon de faire et je reprends ce que j'avais écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="expr1" select="@test"  />
    <xsl:variable name="p1" select="blablabla"  />
    	<xsl:variable name="expr" select="saxon:evaluate($expr1)" as="xs:boolean" />
    Alors ça, c'est faux

    Il faut bien utiliser des variables $p1, $p2, etc... mais les déclarer dans le XSL ne sert à rien (suffit de faire le test "'boolean($p1)'" dans l'expression $expr1, et vous sortirez avec un false() dans $expr).

    Bref, ce qu'il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="expr1" select="@test"  />
    <xsl:variable name="p1" select="blablabla"  />
    	<xsl:variable name="expr" select="saxon:evaluate($expr1, $p1, $p2,$p3...)" as="xs:boolean" />
    Aucune nécessité de déclarer $p1 à l'avance, vous pouvez mettre directement "blablabla" dedans

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

Discussions similaires

  1. [DOM] supprimer un noeud avec une expression xpath
    Par Fab88 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/06/2007, 11h45
  2. [SimpleXML] besoin d'aide sur une expression xpath
    Par ANISSS dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 11/05/2007, 10h23
  3. rechercher variable contenant une quote
    Par fins51 dans le forum Access
    Réponses: 2
    Dernier message: 21/03/2007, 22h20
  4. [XPATH] Evaluer une expression xpath dans un xml
    Par antigone dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 29/01/2007, 17h21
  5. Peux on insérer une variables dans une expression calculé
    Par casse.gueule dans le forum Access
    Réponses: 4
    Dernier message: 20/11/2005, 20h10

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