1633 sujets
Formats, encodage, internationalisation, XML
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...
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.
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.
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.
@ 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)
@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.
@ 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)
Moi aussi j'ai une colle :
On sait que a fonction translate convertit une suite de caractère comme ceci :
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 à :
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')"/>
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.
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.
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.