chargement xslt plusieur fois
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.
Code:
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> |
Dans la frame top j'ai un petit formulaire permettant d'inscrire le nom et la langue du fichier xml.
Code:
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> |
Et voici mon code javascript
Code:
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> |
Tous marche bien sous IE. Le problème vient de firefox.
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.
Code:
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); |
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.