Salut à tous,
J'explique mon cas, je passe dans mon url un paramètre pouvant contenir des + ou - suivi d'un entier.
Exemple : http://site.net/page.php?param=+10+15+21
Je passe cette valeur donc la valeur de param dans mon xml, je précise que j'utilise urlencode() sur param pour que mes + soient bien interprétés comme tels et non comme des espaces.
Dans mon xsl, je génère des liens de façon à rajouter un +x ou -x à cette valeur.
J'ai définit avant de générer ces urls une variable contenant l'url de la page en cours avec tous ses paramètres.
Bref, jusqu'ici aucun problème.
Là ou je n'arrive pas à trouver ce qui cloche c'est dans les remplacements des chaînes où il y a des + et des moins, car je pense que ça vient de là mais sans en être totalement certain.
Le code en question :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="/page/contenu/formulaire[@nom='visu']/valeur/filtre">
<xsl:value-of select="translate($url, concat('filtre=', /page/contenu/formulaire[@nom='visu']/valeur/filtre), concat('filtre=', /page/contenu/formulaire[@nom='visu']/valeur/filtre, $param, @id))" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($url, '&filtre=', $param, @id)" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<img src="{concat('modele/', /page/entete/style, '/', $src)}" alt="{$param}" />
</xsl:element> |
$param a pour valeur + ou -
@id est un entier
/page/contenu/formulaire[@nom='visu']/valeur/filtre contient la chaîne des +x+x-x etc..
Je sais que je rentre bien dans l'évaluation du translate puisque j'ai testé avec des chaînes différentes.
Et en faisant ça, j'ai le droit à un comportement anarchique
Par exemple en ajoutant TTT
<xsl:value-of select="translate($url, concat('filtre=', /page/contenu/formulaire[@nom='visu']/valeur/filtre), concat('TTTfiltre=', /page/contenu/formulaire[@nom='visu']/valeur/filtre, $param, @id))" />
Et avec pour valeur de $url de départ :
gestion.php?cat=commentaire&page=1&affichage=0&nbcompp=25&comds=0&comordre=DESC&filtre=+15&artid=1
J'obtiens à l'arrivée :
glsfTon.php?caftcommlnfaTil&paglte&aTTTchaglt0&nbcomppt2=&comdst0&comoidiltDESC&TTTfiltre=&aifTdte
J'ai testé en mettant des string() de tout part mais sans résultat.
A noter que je fais plusieurs remplacement sur $url sur ma page et je n'ai de problème qu'ici.
Une idée de comment pouvoir résoudre cet étrange problème ?
Merci d'avance.
Partager