Holge r: Javascript XSL transformation

Hallo,

kann mir jemand Rat geben hinsichtlich folgendem Problem:

XSL Transformation mit JavaScript (nur Mozilla Browser benoetigt) soll einen Teil des Dokuments ersetzen durch ein Ergebnis aus einer XSLT Transformation. Problem ist, dass ich nicht ganz weiss, wie ich sicherstelle, dass das Ergebnis bei einer wiederholten transformation neu erstellt wird und nicht einfach nur an das vorherige angehangen wird.

Folgend Codeschnipsel habe ich bisher verwendet:

aufruf der JS funtion mit :

myTransformation('source.xml', 'transform.xsl', content.document.getElementById('content'));

Function sieht so aus:

  
function myTransformation (xmlURL, xslURL, insertNode) {  
  var xmlDocument = insertNode.ownerDocument.implementation.createDocument('', 'dummy', null);  
  xmlDocument.onload = function (evt) {  
    var xslDocument = insertNode.ownerDocument.implementation.createDocument('', 'dummy', null);  
    xslDocument.onload = function (evt) {  
      var xsltProcessor = new XSLTProcessor();  
      xsltProcessor.importStylesheet(xslDocument);  
      var resultFragment = xsltProcessor.transformToFragment(xmlDocument, insertNode.ownerDocument);  
      insertNode.appendChild(resultFragment);  
    };  
    xslDocument.load(xslURL);  
  };  
  xmlDocument.load(xmlURL);  
}  

Die Webseite hat einen divcontainer:

  
<input type="button" name="Name" value="Beschriftung" onclick="myTransformation('source.xml', 'transform.xsl', content.document.getElementById('content'));"/>  
  <option/>  
</select>  
<div id="content">  
  <diverse/>  
  <knoten/>  
</div>

Habe nun schon verschiedenes probiert aber bei aufruf der Funktion wird das ergebnis immer nur dem div container hinzugefuegt, aber nicht das vorherige entfernt aus dem div container entfernt.

Weiss jemand Rat? Muss zugeben JavaScript ist nicht meine Staerke ;-)

  1. Hallo,

    Habe nun schon verschiedenes probiert aber bei aufruf der Funktion wird das ergebnis immer nur dem div container hinzugefuegt, aber nicht das vorherige entfernt aus dem div container entfernt.

    Weiss jemand Rat? Muss zugeben JavaScript ist nicht meine Staerke ;-)

    Erweitere deine "myTransformation "-Funktion so, dass vor der Transformation der Inhalt von "document.getElementById('content')" gelöscht wird.

    Z.B: document.getElementById('content').innerHTML = "";

    Grüße
    Thomas

    1. Hallo Thoms,

      danke fuer die Antwort. Ich hatte das mit dem innerHTML schon probiert und es klappte nicht so. Dank deiner Antwort habe ich mich aber noch mal drangemacht, die Loesung habe ich nun in einer while schleife zur Loeschung aller child nodes gefunden. Warum das innerHTML nicht funktioniert muss nicht noch loesen, aber das eigentlich Problem ist weg ;-) Vielen Dank!

      1. Hallo,

        danke fuer die Antwort. Ich hatte das mit dem innerHTML schon probiert und es klappte nicht so. Dank deiner Antwort habe ich mich aber noch mal drangemacht, die Loesung habe ich nun in einer while schleife zur Loeschung aller child nodes gefunden. Warum das innerHTML nicht funktioniert muss nicht noch loesen, aber das eigentlich Problem ist weg ;-) Vielen Dank!

        sollte aber nach dem "Schema":

        HTMLAusgabe = objectXSLTProcessor.transformToFragment(objectXML, document);  
          
        document.getElementById("ausgabe").innerHTML = "";  
        document.getElementById("ausgabe").appendChild(HTMLAusgabe);
        

        eigentlich funktionieren.

        Grüße
        Thomas