Bonjour,

J'ai une colle a poser aux pro de l'XSL car je débute dans ce domaine.

Savez vous comment faire pour obtenir avec une date du genre 2007-03-30 ceci
Vendredi 30 mars

Le tout en XSL

Merci d'avance de votre aide.

K.
Bonjour.

En espérant que la transformation est effectuée côté serveur, il est peut-être judicieux de faire appel à php avec la fonction xsl:processing-instruction...


<xsl:processing-instruction name="php"> 
   // içi, du code pour convertir à partir de <xsl:value-of select="la_date" />
   echo $libDate;
</xsl:processing-instruction>


Ceci va inclure un fragment php dans l'arbre de sortie, encadré par <?php et ?>.

Encore faut-il que le résultat de la transformation soit évalué par php.

Il y a donc un peu de mise au point à faire.
Modérateur
Salut,

@GeorgeM :
On pourrait tout aussi bien transformer la date via php puis la passer en tant que paramètre lors de la transformation xslt. Ca permettrait de ne pas mélanger les codes xsl et php. Smiley cligne

@ Koben :
xslt ne permet pas d'écrire une date directement, il faut donc un autre langage pour le faire.
Modifié par koala64 (31 Mar 2007 - 09:44)
koala64 a écrit :
Salut,

@GeorgeM :
On pourrait tout aussi bien transformer la date via php puis la passer en tant que paramètre lors de la transformation xslt. Ca permettrait de ne pas mélanger les codes xsl et php. Smiley cligne


toutafé.
Moi aussi j'ai une colle :

On sait que a fonction translate convertit une suite de caractère comme ceci :

<xsl:value-of select="translate(.,'abcde','ABCDE)"/>

Il y aurait-il un moyen de lui faire comprendre que pour la premiere translation 2 caractères (01) deviennent 7 caractères (Janvier), la deuxième 2 -> 7, la troisème 2->4 ...
pour avoir un code qui pourrait ressembler à :

<xsl:value-of select="translate(.,'01 02','Janvier Février')"/>
A en juger par les non-réponses, je suppose qu'on ne peut pas "triturer" la fonction translate().
Modérateur
Salut,

Je ne pense pas dire de bêtise en te confirmant qu'on ne peut pas l'utiliser ainsi, chaque lettre citée en second argument de la fonction translate étant remplacée par une autre située à la même position dans le troisième argument. Il faudrait pouvoir passer une expression régulière, ce que ne permet pas cette fonction. J'ai tendance à penser qu'il est bien plus facile de passer par PHP via str_replace ou preg_replace pour ce genre de chose. En XSLT, le formatage ne doit pas être totalement impossible mais ça ne semble vraiment pas rentable de passer par ce biais.
Modérateur
Je crois avoir vu qu'on pourrait se servir des expressions régulières en XSLT2.0... donc, pour le moment, avec Saxon uniquement (il me semble bien... à vérifier). Cela dit, avec la classe EXSLT (PHP), on doit pouvoir y recourir.