Bonjour � tous,
Tout d'abord je tiens � dire que j'ai fait de nombreuses recherches sur ce forum �i et ailleurs pour tenter de r�soudre mon probl�me. En vain
Voil� donc le probl�me ..
J'utilise Javascript afin de faire du XSLT c�t� client. Je charge le fichier XML, le fichier XSL puis javascript proc�de � la transformation et int�gre son r�sultat dans un div.
Aucun probl�me lorsque je n'effectue qu'une transformation par page.
Par contre, lorsque j'effectue 2 transformations dans une m�me page (mais dans 2 div diff�rents), j'ai un probl�me sous firefox (et sous firefox uniquement, aucun probl�me sous IE).
En effet, seule la 2i�me transformation est r�alis�e ..
J'ai donc un div vide et l'autre qui contient le r�sultat attendu.
Voil� le code html (simplif� bien s�r) :
Donc le r�sultat est que si je fais une seule transformation, aucun probl�me, si j'en fais 2 seule la derni�re est faite (sous firefox).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 <body onload="javascript:Transform('xml.php?d=menu', 'xsl.php?d=menu', 'menuPage'); Transform('xml.php?d=contenu', 'xsl.php?d=contenu', 'contenuPage');"> <div id="menuPage">Menu de la page</div> <div id="contenuPage">Contenu de la page</div>
(xml.php et xsl.php servant bien s�r � g�n�rer du contenu xml et des feuilles de style xsl.)
Et voil� la fonction Transform et tout ce qui va avec ..
Voil�, d�sol� de livrer autant de code d'un coup, c'est indigeste .. mais �tant donn� que je ne sais pas du tout d'o� vient l'erreur, je suis bien oblig� de tout donner
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132 // platformMoz: http://www.mozilla.org/projects/xslt/js-interface.html // platformIE6: http://www.perfectxml.com/articles/xml/XSLTInMSXML.asp var platformMoz = (document.implementation && document.implementation.createDocument); var platformIE6 = (!platformMoz && document.getElementById && window.ActiveXObject); var noXSLT = (!platformMoz && !platformIE6); var msxmlVersion = '3.0'; var urlXML; var urlXSL; var docXML; var docXSL; var target; var cache; var processor; var i; if (platformIE6) { // TODO... find out version of MSXML installed cache = new ActiveXObject('Msxml2.XSLTemplate.' + msxmlVersion); } function SetTarget(id) { target = document.getElementById(id); } function SetInput(url) { urlXML = url; } function SetStylesheet(url) { urlXSL = url; } function FatalError() { alert("Sorry, this doesn't work in your browser"); } function CreateDocument(isXsl) { var doc = null; if (platformMoz) { if (!isXsl) doc = document.implementation.createDocument('', '', null); else { doc = document.implementation.createDocument("http://www.w3.org/1999/XSL/Transform","stylesheet",null); } } else if (platformIE6) { doc = new ActiveXObject('Msxml2.FreeThreadedDOMDocument.' + msxmlVersion); } return doc; } function Transform(fichierXML, fichierXSL, divCible) { SetTarget(divCible); SetInput(fichierXML); SetStylesheet(fichierXSL); if (noXSLT) { FatalError(); return; } docXML = CreateDocument(false); docXSL = CreateDocument(true); if (platformMoz) { docXML.addEventListener('load', DoLoadXSL, false); docXML.load(urlXML); } else if (platformIE6) { docXML.async = false; docXML.load(urlXML); docXSL.async = false; docXSL.load(urlXSL); DoTransform(); } } function DoLoadXSL() { if (platformMoz) { docXSL.addEventListener('load', DoTransform, false); docXSL.load(urlXSL); } } function DoTransform() { if (platformMoz) { processor = new XSLTProcessor(); processor.importStylesheet(docXSL); var fragment = processor.transformToFragment(docXML, document); while (target.hasChildNodes()) target.removeChild(target.childNodes[0]); target.appendChild(fragment); } else if (platformIE6) { cache.stylesheet = docXSL; processor = cache.createProcessor(); processor.input = docXML; processor.transform(); target.innerHTML = processor.output; } }
Le dernier point, c'est le log apache lors de la visite de la page :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 Sous IE [26/Apr/2006:10:27:48 +0200] "GET /test/xml.php?d=menu HTTP/1.1" 200 265 [26/Apr/2006:10:27:48 +0200] "GET /test/xsl.php?g=menu HTTP/1.1" 200 699 [26/Apr/2006:10:27:49 +0200] "GET /test/xml.php?d=contenu HTTP/1.1" 200 190 [26/Apr/2006:10:27:49 +0200] "GET /test/xsl.php?g=contenu HTTP/1.1" 200 556Comme vous pouvez le voir, il y a une erreur de chargement sous Firefox .. j'ai beau tourner et retourner le code dans tous les sens, je ne comprend pas d'o� elle vient .. besoin d'aide
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 Sous Firefox [26/Apr/2006:10:41:15 +0200] "GET /test/xml.php?d=menu HTTP/1.1" 200 265 [26/Apr/2006:10:41:15 +0200] "GET /test/xml.php?d=contenu HTTP/1.1" 200 190 [26/Apr/2006:10:41:15 +0200] "GET /test/xsl.php?g=contenu HTTP/1.1" 200 556 [26/Apr/2006:10:41:15 +0200] "GET /test/xsl.php?g=contenu HTTP/1.1" 200 556
Merci d'avance.
Partager