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] Accèder à un noeud via un xsl:param


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 71
    Points : 54
    Points
    54
    Par défaut [XSLT] Accèder à un noeud via un xsl:param
    Bonjour,

    Hier déjà j'avais embêté Alain avec mes questions de débutant. Et bien ce n'est pas terminé, j'en remet une couche :-(

    Voilà mon fichier xml
    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>
             <meta-tag langue="fr">
                      <title>titre fr</title>
             </meta-tag>
             <meta-tag langue="de">
                      <title>titre de</title>
             </meta-tag>
             <body langue="fr">
                      nouveau texte<p>texte FR <img src="monimage fr.gif" /></p>
             </body>
             <body langue="de">
                      nouveau texte<p>texte DE <img src="monimage fr.gif" /></p>
             </body>
    </xml>
    et dans mon fichier xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:param name="langue" />
    <xsl:param name="balise" />
    <xsl:template match="/">
             <xsl:copy-of select="xml/body[@langue=$langue]/node()" />
    </xsl:template>
    si je remplace
    <xsl:copy-of select="xml/body[@langue=$langue]/node()" />
    par
    <xsl:copy-of select="xml/$balise[@langue=$langue]/node()" />

    Je me retrouve avec 4 erreurs. J'ai pas mal chercher sur le net. Sauf erreur de ma part c'est une problème de "tree fragment" lié à xslt 1.0... j'ai bien essayer de regarder du coté de xslt 2.0, mais c'est mort car je suis dans un environnement php. J'approfondie mes recherches et voie qu'il y a une possibilité de transformer un "tree fragment" en "node set" avec exsl:node-set. Magique, il se trouve que le module EXSLT est installé sur mon apache.
    Mais voilà, j'en suis à mes débuts en XSL et pour le moment je ne touche pas carton. Je change mon <xsl:stylesheet...> par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl">
    puis j'essaie d'utiliser exsl:node-set
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-fo select="xml/exsl:node-set($balise)[@langue=$langue]/node()" />
    Et bien évidement il me pleut des erreurs : invalid expression, compilation error, etc etc. Qqun pour m'éclairer?

    Un grand merci d'avance.
    Grégoire

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Salut,
    tu ne peux pas utiliser une variable dans une expression xpath.
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:param name="langue" />
        <xsl:param name="balise" />
        <xsl:template match="/"> 
            <xsl:copy-of select="xml/node()[ (name() = $balise) and (@langue = $langue)]" />
        </xsl:template>
    </xsl:stylesheet>

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 71
    Points : 54
    Points
    54
    Par défaut
    C'est tellement simple que ça en est beau! merci bcp pour ce mini cours!

    Grégoire

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/12/2008, 10h53
  2. [XSLT] Générer Document HTML via un XSL
    Par dahu17 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/09/2007, 16h51
  3. [FF][XSLT][JS] Affichage xml via xsl sous Mozilla
    Par Eileen dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 26/04/2007, 12h13
  4. [XSLT]Atteindre un node set dans xsl:param
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/10/2006, 11h21
  5. [XSLT] DOM en tant que XSL param
    Par azerr dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 06/07/2006, 11h14

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