Bonjour
J'essaie de charger du xslt dans firefox mais cela ne marche qu'une fois et toutes les fois suivantes, il y a une erreur.
Voici comment se découpe mon interface.
Je définie mes frames dans le fichier frameset.html.
Dans la frame top j'ai un petit formulaire permettant d'inscrire le nom et la langue du fichier xml.
Dans la frame top j'ai un petit formulaire permettant d'inscrire le nom et la langue du fichier xml.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html><head> <title></title> </head> <frameset rows="100,*"> <frame name="top" id="top" src="top.html" > <frame name="bottom" id="bottom" src="empty.html" > </frameset> </html>
Et voici mon code javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" > <title>Untitled Document</title></head> <body> <p> <input type="text" value="en" id="language" name="language" size="10" > <input type="text" value="Notification_request_1.xml" id="filename" name="filename" size="30"> <input type="button" value="go" onclick="javascript:go()"> </p> </body> </html>
Tous marche bien sous IE. Le problème vient de firefox.
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 <script type="text/javascript" > var processor = new XSLTProcessor(); var testTransform = document.implementation.createDocument("", "test", null); var domToBeTransformed = document.implementation.createDocument("", "test", null); var language = "et"; var filename = ""; function go() { language = document.getElementById("language").value; filename = document.getElementById("filename").value; if (window.XSLTProcessor) { // Firefox // just an example to get a transform into a script as a DOM // XMLDocument.load is asynchronous, so all processing happens in the // onload handler testTransform.addEventListener("load", onload1, false); testTransform.load("test.xslt"); } else if (window.ActiveXObject) { // Internet Explorer var xml = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); xml.async = false; xml.load(filename); var xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); xsl.async = false; xsl.load("test.xslt"); var template = new ActiveXObject("MSXML2.XSLTemplate"); template.stylesheet = xsl; var process = template.createProcessor(); process.input = xml; process.transform(); parent.bottom.document.open(); var text = process.output; parent.bottom.document.writeln(text.replace(/%LANGUAGE%/g, language)); parent.bottom.document.close(); } } // Firefox function onload1() { processor.importStylesheet(testTransform); domToBeTransformed.load(filename); domToBeTransformed.addEventListener("load", onload2, false); } function onload2() { var newDocument = processor.transformToDocument(domToBeTransformed); var xmls = new XMLSerializer(); var text = xmls.serializeToString(newDocument); parent.bottom.document.open(); parent.bottom.document.writeln(text.replace(/%LANGUAGE%/g, language)); parent.bottom.document.close(); } </script>
La première fois que je clique sur le bouton ok, ma page s'affiche bien.
Mais les autres fois, cela me fait une erreur.
Je ne comprend pas le message d'erreur mais je pense qu'il est générique. Est ce que quelqu'un peut m'aidez svp.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIXSLTProcessor.importStylesheet]" nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)" location: "JS frame :: file:///C:/Documents%20and%20Settings/adamre/My%20Documents/EformOnHTML/top.html :: onload1 :: line 44" data: no] [Break on this error] processor.importStylesheet(testTransform);
Partager