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] appel plusieurs xml dynamiquement


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut [XSL] appel plusieurs xml dynamiquement
    bonjour a tous,

    j'essaye dans un document xsl de faire appel a plusieurs documents xml :
    le probleme et que j'essaie de faire l'appel a ces fichieers xml de facon dynamique : les appels des prochains fichiers dependent du premier fichier appeler ....

    mon pb est dans une boucle for each ou je veux preciser qu on va dans un autre fichier :

    En dur ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <xsl:for-each select="document('./evtp_CdTRoue.xml')//EvenementProduit/Evtp">


    Mais lorsque j essaie de faire l appel dynamiquement :

    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
     
    <xsl:stylesheet version="2.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:exsl="http://exslt.org/common"
      extension-element-prefixes="exsl">
     
     
    <xsl:variable name="debut">document('./evtp_CdT</xsl:variable>
    				<xsl:variable name="milieu">
    				<xsl:value-of select="EvenementProduit/@nomModele"/>
    				</xsl:variable>
    				<xsl:variable name="fin">.xml')//EvenementProduit/Evtp</xsl:variable>
    				<xsl:variable name="AdresseDetails" select="exsl:node-set(concat($debut,$milieu,$fin))"/>
    				<xsl:value-of select="$AdresseDetails"/>
     
     
    <xsl:for-each select="$AdresseDetails">
    et la aucune données n'est marquer dans ma page html alors que seule la ligne for each change et que lorsque j affiche $AdresseDetails j ai bien document('./evtp_CdTRoue.xml')//EvenementProduit/Evtp ...

    donc je ne comprend pas pourquoi ca ne fait rien ???

    Merci d avance.

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Ca ne fait rien car le résultat est une chaine et non pas une expression XPath... Il n'y a pas d'évaluation dynamique en standard en XPath...

  3. #3
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    En fait il semblerait que la fonction document() ne soit pas interpreter comme telle lorsqu elle est dans la valeur d'une variable ou utiliser dnas la concatenation

    En gros il me faut un select= document ( evtp .... + NOM DYNAMIQUE ( 1 fois par appel du fichier) + .xml //.....

    Que faire mes amies ?

  4. #4
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    et donc alain quelles solutions soffrent a moi ??

    peut etre passé des parametres via le tranformer et apres faire un select="$monparametrepassé" dans mon for each ...

  5. #5
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    BON les enfants ont se calme ... PAPA a encore trouver la solution

    j ai juste creer une variable qui est en fait la seule partie dynamique de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:variable name="milieu">
    ./evtp_CdT<xsl:value-of select="EvenementProduit/@nomModele"/>.xml
    </xsl:variable>

    voila et apres dans mon select du for each je procede de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:for-each select="document($milieu)//EvenementProduit/Evtp">

    Voila il faut bien se rappeler de ne pas mettre le mot "document" dans une variable car ca ne serait plus considerait comme une fonction ....


    Voila bon ma partie et now 200% dynamique .... une des trois grosses parties
    est finie ... bon c pas l heure de l apero ???

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

Discussions similaires

  1. [XSL] 1 feuille XSL et plusieurs XML
    Par fredcvn dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/04/2010, 14h11
  2. Appliquer un seul XSL à plusieurs XML
    Par Jeune_Informaticien dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/02/2010, 00h51
  3. [XSLT]un fichier xsl et plusieurs fichiers xml
    Par akhtira dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/02/2008, 11h03
  4. [XSL:~FO][FOP]appeler plusieurs éléments racine.
    Par atoila dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 30/06/2006, 10h53
  5. Interroger plusieurs xml avec un xsl
    Par lafracas dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/04/2006, 23h29

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