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