IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

chargement xslt plusieur fois [Fait]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Par défaut 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 : 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>
    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
    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 : 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>
    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 : 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);
    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.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Par défaut
    je me répond à moi même.
    Voici un lien très interressent ou j'ai trouvé ma réponse.
    http://developer.mozilla.org/fr/docs...formations_XSL

    et voici la solution

    L'objet XSLTProcessor implémente également une méthode reset() qui peut être utilisée pour supprimer toutes les feuilles de style et tous les paramètres puis ramener le processeur dans son état initial. Cette méthode est implémentée dans Mozilla 1.3 et supérieurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. WPF MEF : chargement d'un module plusieurs fois
    Par CaptainChoc dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 19/10/2011, 11h49
  2. Réponses: 5
    Dernier message: 07/04/2008, 17h40
  3. [XSLT] variable définie plusieurs fois dans la même portée
    Par dhallennem dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/02/2008, 15h48
  4. Réponses: 2
    Dernier message: 10/07/2004, 17h14
  5. [Servlet] Comment utilisé une servlet plusieurs fois ?
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 03/06/2004, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo