XML-XSLT-Transformatiom ohne JavaScript
Von: Jens Sager (jens.sg@gmx.de) [Profil]
Datum: 02.06.2008 11:35
Message-ID: <g20es9$s0j$1@news.albasani.net>
Followup-to: de.comp.lang.javascript
Newsgroup: de.comp.lang.javascript de.comm.software.browser.internet-explorer
Datum: 02.06.2008 11:35
Message-ID: <g20es9$s0j$1@news.albasani.net>
Followup-to: de.comp.lang.javascript
Newsgroup: de.comp.lang.javascript de.comm.software.browser.internet-explorer
Hallo!
Folgendes, "kleines" Problem:
Wir möchten XML-Dokumente in eine Website einbinden und diese dazu mit
JavaScript von XML nach XSLT wandeln.
Dazu haben wir folgende Bibiothek gefunden:
http://johannburkard.de/software/xsltjs/
Leider rührt sich da unter IE rein gar nichts und gewöhnlich ist die
Fehlerausgabe unter IE ja noch nicht allzu ausführlich, aber hier gibt
es nicht einmal einen Fehler.
Kann es sein, dass man doch Active X benötigt für diese Transformation
oder woran liegt es sonst - falls das jemand weiß.
Ich habe mir das Skript angesehen, verstehe aber nicht ganz, was da im
IE-Teil passiert:
### Code-Auszug ###
if (document.recalc) { // IE 5+
$.fn.xslt = function(xml, xslt) {
return this.each(function() {
var id = function() {
do {
var f = 'xsltjs' + (Math.round(Math.random() * 999));
}
while ($('#' + f).length);
return f;
};
// Erzeugt irgendwelche IDs. Ok, aber wozu?
var xmlID = id();
var xsltID = id();
// "Alias" auf das referenzierte jQuery-Objekt
// also das Tag in das das Ergebnis eingefügt
// werden soll. Richtig?
var target = $(this);
// in dieser Funktion ist der Teil verpackt,
// der die Umwandlung durchfuehrt oder?
var change = function() {
var c = 'complete';
var xm = $('#' + xmlID);
var xs = $('#' + xsltID);
if (xm.length && xm.get(0).readyState == c &&
xs.length && xs.get(0).readyState == c) {
// Nach 50 ms wird die Transformation gestartet?
window.setTimeout(function() {
// In das target wird der html code eingefuegt, der ...?
// Ist das nicht eine Active X-Methode?
// \------------------vvvvvvvvvvvvv
target.html(xm.get(0).transformNode(xs.get(0).XMLDocument));
}, 50);
}
};
// Neues Element erzeugen, dem der XML-Quellcode zugewiesen wird
var xm = document.createElement('xml');
xm.onreadystatechange = change;
xm.id = xmlID;
xm.src = xml;
// Neues Element erzeugen, in dem der XSLT-Quellcode
// eingefügt wird
var xs = document.createElement('xml');
xs.onreadystatechange = change;
xs.id = xsltID;
xs.src = xslt;
// An das Document die beiden neuen Elemente anhaengen
$('body').append(xm).append(xs);
});
};
}
### Ende Code-Auszug ###
Also, ich verstehe nicht wieso dieses Plugin Active X unabhängig sein
soll (siehe http://johannburkard.de/software/xsltjs/), wenn doch da drin
'transformNode' verwendet wird.
Oder übersehe ich etwas?
Hat jemand vielleicht noch einen anderen Tip, wie man ohne Active
X-Abhängigkeit XML mit XSLT in JavaScript translatieren kann?
Thx,
Jens
[ Auf dieses Posting antworten ]Antworten
- Viktor Krammer (02.06.2008 12:38)
- Martin Honnen (02.06.2008 12:56)
