[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:
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:
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:
<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:
<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