xml+xslt+javascript = erreur d'affichage

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
le thécaire

xml+xslt+javascript = erreur d'affichage

Message par le thécaire »

Bonjour à tous,

Je pioche sur un problème récurrent d'affichage : il s'agit de faire afficher la date de mise à jour d'un fichier (une page web http://www.bibliotheques.uqam.ca/recher ... nables.xml listant les bases de données incontournables en sociologie) dans le bas de la page web à droite. Je fais faire des transformations XSLT sur des fichiers XML côté client : j'ai mis le javascript (qui génère la date de mise à jour) dans la feuille XSLT. Dans IE ça fonctionne, la date s'affiche. Dans FX la date ne s'affiche pas.
J'ai essayé de mettre le javascript dans un fichier à part : ça ne fonctionne toujours pas. J'ai aussi essayé de mettre le code dans des sections CDATA, fonctionne toujours pas. Enfin j'ai pris le HTML généré par la feuille XSLT, j'ai un crée un fichier HTML et ça fonctionne dans FX...
On dirait que le problème vient de FX : il semble incapable de traiter du javascript intégré dans du XSLT.

Vous pouvez jeter un coup d'oeil sur la feuille XSLT ici. http://www.bibliotheques.uqam.ca/xml/co ... es_xsl.txt

Quelqu'un peu m'aider ?

Merci !

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D

pas facile, ... pas trouvé en enier, ... vraiment besoin des pros de Geckozone

En résume :
<xsl:comment>
</xsl:comment>
ne permet pas sous Firefox d'interpréter du javascript
Il faut leur préférer :
<![CDATA[
]]>
et remplacer : if (fyear < 2000) par if (fyear < 2000)

de plus, gros problème : Firefox n'interprète pas lors d'une transformation le code JS : document.write
Il faut remplacer cela par un SPAN et innerHTML

Mais où je bloque ce matin (2:55) c'est sur le javascript : document.lastModified
qui fonctionne très bien dans une page normale
mais plus du tout dans la transformation

voilà le code que j'ai trouvé pour le moment :

Code : Tout sélectionner

<div>
	<p >
		©2006 Service des bibliothèques<br/>
		<span id="dtmodified"> </span>
	</p>
</div>
        <script language="JavaScript" type="text/javascript">
<![CDATA[
var days = new Array(8);
days[1] = "dimanche";
days[2] = "lundi";
days[3] = "mardi";
days[4] = "mercredi";
days[5] = "jeudi";
days[6] = "vendredi";
days[7] = "samedi";
var months = new Array(13);
months[1] = "01";
months[2] = "02";
months[3] = "03";
months[4] = "04";
months[5] = "05";
months[6] = "06";
months[7] = "07";
months[8] = "08";
months[9] = "09";
months[10] = "10";
months[11] = "11";
months[12] = "12";
var dateObj = new Date(document.lastModified)
var wday = days[dateObj.getDay() + 1]
var lmonth = months[dateObj.getMonth() + 1]
var date1 = dateObj.getDate()
var fyear = dateObj.getYear()
if (fyear < 2000) 
  fyear = fyear + 1900;
// document.write("Mise à  jour  " + "le " + date1 + "-" + lmonth + "-" + fyear)
document.getElementById("dtmodified").innerHTML="Mise à  jour  " + "le " + date1 + "-" + lmonth + "-" + fyear;
]]>
</script>
qui donne sous IE
©2006 Service des bibliothèques
Mise à jour le 8-08-2006

et sous Firefox
©2006 Service des bibliothèques
Mise à jour le 1-01-1970 :?:

A+
Christian


Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Nucleos
Lézard à collerette
Messages : 282
Inscription : 04 juil. 2003, 17:04

Re: xml+xslt+javascript = erreur d'affichage

Message par Nucleos »

le thécaire a écrit : j'ai mis le javascript (qui génère la date de mise à jour) dans la feuille XSLT. Dans IE ça fonctionne, la date s'affiche. Dans FX la date ne s'affiche pas.
Prologue : je n'y connais (presque) rien à JavaScript.

Alors j'ai fait un test (avant de me coucher) pour un peu éclaircir le problème. Si par exemple tu testais le JavaScript seul ? Moi je n'ai pas réussi à lui faire afficher quoi que ce soit...

Je pense que Firefox sait très bien (sans doute mieux que IE) se débrouiller avec des transformations XSLT, mais pas très bien avec du JavaScript qu'il ne comprend pas à la base !
« La clarté est la politesse des professeurs. » (E. Gerurez)
... Posons de bonnes questions !
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D
Si par exemple tu testais le JavaScript seul ?
:idea: En modifiant if (fyear < 2000) :wink:
Cordialement
Christian

PS. En fait LE SEUL problème restant est :
:?: Comment récupérer en javascript le :
document.lastModified lors d'une transformation XSL DANS Firefox
( c'est sûrement une autre syntaxe mais je ne connais pas bien Firefox )

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Invité

Message par Invité »

lpgc a écrit : Il faut leur préférer :
<![CDATA[
]]>
et remplacer : if (fyear < 2000) par if (fyear < 2000)

de plus, gros problème : Firefox n'interprète pas lors d'une transformation le code JS : document.write
Il faut remplacer cela par un SPAN et innerHTML
:shock: Holà ! j'peux me permettre de te demander où tu as trouver ça ? j'suis très débutant dans le JS et toutes les sources m'intéressent.
lpgc a écrit : Mais où je bloque ce matin (2:55) c'est sur le javascript : document.lastModified
qui fonctionne très bien dans une page normale
mais plus du tout dans la transformation

voilà le code que j'ai trouvé pour le moment :
Fantastique, ça fonctionne... Effectivement il affiche la date zéro.
( c'est sûrement une autre syntaxe mais je ne connais pas bien Firefox )
TK tu en connais certaines particularités... chapeau

Merci beaucoup Salamandre. Je vais continuer sur la piste de la propriété lastmodified.

pierre

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D
Où on peut trouver cela ? ... A vrai dire partout sur le Net c'est très facile à trouver :D

voici 2 adresses :
http://www.w3schools.com/xml/xml_cdata.asp
et
http://en.wikipedia.org/wiki/Client-side_JavaScript

chez moi çà fonctionne très bien sous IE et Firefox
http://www.lpgc.be/tutor/xsl/lastmodified.htm

si c'est pour essayer dans une page seule il faut en plus mettre // devant les balises :
//<![CDATA[
//]]>
En fait je pense que sous cette forme c'est valable aussi pour le xslt mais j'ai pas essayé.

:roll: Je suis très certainement aussi débutant que vous en programmation Web et sur ce Forum :
Salamandre est un indicateur qui correspond au nombres de messages postés
et lpgc est mon pseudo :wink:

Cordialement, :D
Christian

PS. Par contre si vous trouvez la solution, en plus de l'auteur de cet article, elle m'intéresse également :D :D



Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités