flaffy: XML über XSLT rendern und dann in Webseite einbinden?

Huhu

Ich würde gerne ein XML- sowie ein XSLT Dokument von einem Server laden, und das Ergebnis dann als DOM Knoten per appendChild an ein Element in meiner Webseite hängen. Im Mozilla klappt das wunderbar - im Internet Explorer nicht. Ich hab ein kleines Beispiel in der MSDN gefunden...

Das ganze sieht ungefähr so aus...

var source = new ActiveXObject("Msxml2.DOMDocument.3.0");
source.async = false;
source.load("test.xml");

if( source.parseError.errorCode != 0 )
{
 var myErr = source.parseError;
}
else
{
 var stylesheet = new ActiveXObject("Msxml2.DOMDocument.3.0");
 stylesheet.async = false;
 stylesheet.load("test.xsl");
 if( stylesheet.parseError.errorCode != 0 )
 {
  var myErr = stylesheet.parseError;
 }
 else
 {
  var result = new ActiveXObject("Msxml2.DOMDocument.3.0");
  result.async = false;
  result.validateOnParse = true;
  var e = source.transformNodeToObject(stylesheet, result);
  var e2= result.documentElement;
 }
}

Mit e2 kann ich mir wunderbar die Elemente Ausgeben lassen. Das Problem ist nur, dass ich Elemente die in einem anderen Dokument erzeugt wurden nicht in ein anderes Dokument (in diesem Fall meine Webseite) einbinden kann (Fehlermeldung: Schnittstelle nicht unterstützt).

Hat jemand eine Idee wie ich die Transformation als DOM-"Fragment" erhalte?

  1. Hallo,

    Ich würde gerne ein XML- sowie ein XSLT Dokument von einem Server laden, und das Ergebnis dann als DOM Knoten per appendChild an ein Element in meiner Webseite hängen. Im Mozilla klappt das wunderbar - im Internet Explorer nicht. Ich hab ein kleines Beispiel in der MSDN gefunden...

    Das ganze sieht ungefähr so aus...

    var source = new ActiveXObject("Msxml2.DOMDocument.3.0");
    source.async = false;
    source.load("test.xml");

    if( source.parseError.errorCode != 0 )
    {
    var myErr = source.parseError;
    }
    else
    {
    var stylesheet = new ActiveXObject("Msxml2.DOMDocument.3.0");
    stylesheet.async = false;
    stylesheet.load("test.xsl");
    if( stylesheet.parseError.errorCode != 0 )
    {
      var myErr = stylesheet.parseError;
    }
    else
    {
      var result = new ActiveXObject("Msxml2.DOMDocument.3.0");
      result.async = false;
      result.validateOnParse = true;
      var e = source.transformNodeToObject(stylesheet, result);
      var e2= result.documentElement;
    }
    }

    Mit e2 kann ich mir wunderbar die Elemente Ausgeben lassen. Das Problem ist nur, dass ich Elemente die in einem anderen Dokument erzeugt wurden nicht in ein anderes Dokument (in diesem Fall meine Webseite) einbinden kann (Fehlermeldung: Schnittstelle nicht unterstützt).

    Hat jemand eine Idee wie ich die Transformation als DOM-"Fragment" erhalte?

    Ich verstehe nicht ganz was dfu meinst, dein Code entspricht (bis auf die letze Zeile) dem Code aus dem MSXML-SDK, nur dass du es mit "new ActiveXObject("Msxml2.DOMDocument.4.0");" versuchen solltest.
    Der Sagt auch:
    "outputObject
    An object. On return, contains the product of the transformation of this XML document based on the XSLT style sheet. If the variant represents the DOMDocument object, the document is built according to its properties and its child nodes are replaced during this transformation process. The XML transformation can also be sent to a stream"

    Danach müsstest du auf das Dokument/Objekt zugreifen und es mit (bei einer <div id="output"></div>)
    document.getElemetByID('output').innerHTML = e; einbinden.
    Oder du machst die Transformation so:
    http://forum.de.selfhtml.org/archiv/2005/1/t97848/#m597247

    Grüße
    Thomas