Bonjour à tous,
Comme je l'ai mentionné dans un précédent sujet, je travaille sur un site e-commerce utilisant un cms indépendant.
[Contexte]
Pour effectuer l'ensemble de la navigation sur ce site, je fais appel à des requêtes prédéfinies qui sont envoyées au moteur du cms.
Lorsqu'il les réceptionne et les traite, il génère alors un fichier xml qui concatène l'ensemble des résultats des différentes requêtes.
Enfin, lors de l'envoi de ces fichiers xml, une feuille de style xsl est affecté au moyen de l'interface du cms.
[/Contexte]
Voilà pour le rappel.
Ma problématique est la suivante.
Sur l'une de mes pages, je récupère des informations concernant des livraisons (quantités, date, référence, etc.).
[Extrait]
Jusqu'à présent, je me contentais simplement d'afficher, dans un tableau html, la date d'arrivage d'un article et la quantité qui lui est lié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <arrivage_from_art_code art_code="refXXX.xxx"> <arrivage> <mvtarr_lien_art_code type="VARCHAR">refXXX.xxx</mvtarr_lien_art_code> <mvtarr_quantite_piece type="INT">3000</mvtarr_quantite_piece> <mvtarr_date_disponible type="DATE">2009-10-21</mvtarr_date_disponible> <mvtarr_reference type="VARCHAR">AA00000000</mvtarr_reference> </arrivage> <arrivage> <mvtarr_lien_art_code type="VARCHAR">refXXX.xxx</mvtarr_lien_art_code> <mvtarr_quantite_piece type="INT">3000</mvtarr_quantite_piece> <mvtarr_date_disponible type="DATE">2010-01-10</mvtarr_date_disponible> <mvtarr_reference type="VARCHAR">AA00000001</mvtarr_reference> </arrivage> </arrivage_from_art_code>
Seulement voilà, il nous arrive parfois que la date de réception soit dépassée (ex.: Nous sommes le 22/10/09 et l'article est arrivé le 21/10/09).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <table> <tbody> <tr> <td class="tab_stock_head">Date(s) d'arrivage</td> <td class="tab_stock_head">Quantité à venir</td> </tr> <xsl:for-each select="/root/arrivage_from_art_code/arrivage"> <tr> <td> <xsl:variable name="jour"> <xsl:value-of select="substring(mvtarr_date_disponible,9,2)"/> </xsl:variable> <xsl:variable name="mois"> <xsl:value-of select="substring(mvtarr_date_disponible,6,2)"/> </xsl:variable> <xsl:variable name="annee"> <xsl:value-of select="substring(mvtarr_date_disponible,1,4)"/> </xsl:variable> <xsl:value-of select="$jour"/> <xsl:text>/</xsl:text> <xsl:value-of select="$mois"/> <xsl:text>/</xsl:text> <xsl:value-of select="$annee"/> </td> <td> <!-- Gestion de l'affichage des arrivages --> <xsl:value-of select="mvtarr_quantite_piece"/> pièces. <!-- Fin de la Gestion de l'affichage des arrivages --> </td> </tr> </xsl:for-each> </tbody> </table>
Il me faut donc mettre en place une condition simple pour gérer l'affichage.
Mais après quelques recherches, je sais que le XSL ne permet pas de générer un variable du type "date du jour" comme dans d'autres langages.
J'ai donc recherché une solution me permettant à la fois de générer cette date et de traité les condition d'affichage selon ces 2 dates.
Je suis donc partie sur du javascript. Mais les conflits de langages que je rencontre (et je ne parle que ne ma propre expérience. Je n'ai pas trouvé de solution à ce problème jusqu'à maintenant..) entre celui-ci et le XSL ne me permette pas de gérer des variables XSL dans un morceau de code JS.
J'ai donc tenté la méthode suivante mais sans succès :
[XSL]
[JAVASCRIPT]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <xsl:variable name="dateArr"> <xsl:value-of select="mvtarr_date_disponible"/>"; </xsl:variable>
Note : je suis conscient que la syntaxe est sans doute à revoir. Mais, pour ma défense, j'ai testé une bonne dizaine de solutions différentes au par avant et je commence à en perdre mon latin...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <xsl:text> <script language="javascript" type="text/javascript"> date = new Date(); var aujourdhui = date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate(); var dateArr = {$dateArr}; alert(dateArr); // test d'affichage avant traitement </script> </xsl:text>
Voilà donc mon soucis.Pour le reste du traitement, je saurais faire mais la gestion des variables entre JS et XSL me pose régulièrement des problèmes. Si vous avez une autre solution envisageable, je suis preneur aussi!
Je vous remercie infiniment d'avance pour toute l'aide que vous pourrez m'apporterN.B.: Pour vous éviter de perdre du temps;
NON, je n'ai absolument pas la main mise sur les xml générés par le cms.
OUI, mes notions de XSL/XML sont novices car j'ai tout appris sur le tas et je n'ai jamais pu prendre le temps de les approfondir. (idem pour le javascript)
NON, je ne peux pas utiliser d'autre langage comme le php, l'asp., etc.car ce n'est pas la première fois que je rencontre ce problème.
Partager