Unfortunately, this one doesn't work with jQuery 1.5 in Firefox 3. One of the reasons is the readyState was changed to 0 after $.ajax loaded the xml and xslt files. Below is my fix by replacing line 84-118 in jquery.xslt.js with the following:
var change = function() {
if (xm.readyState == xs.readyState && !transformed) {
var processor = new XSLTProcessor();
if ($.isFunction(processor.transformDocument)) {
// obsolete Mozilla interface
resultDoc = document.implementation.createDocument("", "", null);
processor.transformDocument(xm.responseXML, xs.responseXML, resultDoc, null);
target.html(new XMLSerializer().serializeToString(resultDoc));
}
else {
processor.importStylesheet(xs.responseXML);
resultDoc = processor.transformToFragment(xm.responseXML, document);
target.empty().append(resultDoc);
}
transformed = true;
}
};
if (str.test(xml)) {
xm.responseXML = new DOMParser().parseFromString(xml, "text/xml");
}
else {
xm = $.ajax({ dataType: "xml", url: xml});
}
if (str.test(xslt)) {
xs.responseXML = new DOMParser().parseFromString(xslt, "text/xml");
}
else {
xs = $.ajax({ dataType: "xml", url: xslt});
}
change();
return this;
Will contact the author and update the post later...(Update: the author hasn't responded, but I created a better solution here.)
Ref: xslt.js version 3.2
No comments:
Post a Comment