Bonjour,

J'ai un script Php avec un passage de variable index.php?page=2

Dans mon fichier XSL, j'ai défini ma variable
<xsl:param name="page"/>

J'essaye de faire un affichage conditionnel comme ça mais cela ne marche pas:
<xsl:template match="//div[@id=$page]/head">

En fixant directement la valeur de id, ça marche:
<xsl:template match="//div[@id='SO']/head">

Avez-vous une idée ?
Modifié par deca05 (05 Jun 2006 - 10:30)
On peut se demander déjà si ta variable contient quelque chose. As-tu fait le test ?
Si elle est nulle, ce qui est probable, as-tu passé ta variable en paramètre à XSLT avant la transformation ?
Quel processeur utilises-tu en PHP ?
Avec l'objet xsltProcessor par exemple, il faut appeller la méthode setParameter().


$objet_xslt = new xsltProcessor();
$objet_xslt->setParameter(null, "id", $_GET["id"]);
Bonsoir,

Je complète mon message. Voilà l'erreur :

Warning: Sablotron error on line 20: match pattern contains a variable reference in /home/art/www/der/index.php on line 76

J'ai l'impression que le parser veut un truc comme ça :

<xsl:template match="//div[@id=[b]'[/b]$page[b]'[/b]]/head">


$page = S0 sauf que comme elle est entre quote simple la variable n'est pas prise en compte.
Bonjour,

Je crois comme Anthony Stephan que tu as tout simplement oublié de passer ta variable au processeur.

Par ailleurs sablotron n'est peu être pas le meilleur processeur de PHP. Il a été abandonné avec PHP5.
Si jamais tu utilisais libxslt à l'avenir, voici un exemple de code pour le passage des paramètres.
Merci de vos réponses.

Non, je n'ai pas oublié de passer la variable.

<xsl:param name="page">S1</xsl:param>

déclaré au début du fichier XSL aboutit à la même erreur.

Je regarde les réponses données à Anthony ; J'ai vu que sa demande est exactement similaire à ma demande.

A bientôt sur d'autres post, Deca
Je ne pense pas que tu puisses avoir une variable dans ton match avec "xsl:template match".

Pas sûr, à verifier....
Après des recherches, il s'avère que finalement il est formellement interdit de mettre une variable ou un paramètre, on ne peut en faire l'usage que dans des attributs select en appel (apply-templates,variable,with-param.....)
Dans la mesure où ce n'est pas possible de mettre une variable dans un match, on peut considérer ce post comme résolu.
Modifié par deca05 (05 Jun 2006 - 10:32)
Dans la mesure où ce n'est pas possible de mettre une variable dans un match, on peut considérer ce post comme résolu.
Modifié par deca05 (05 Jun 2006 - 10:33)