AjxXslt.js
Summary
No overview generated for 'AjxXslt.js'
function AjxXslt() {
var doc = AjxXmlDoc.create();
if (AjxEnv.isIE) {
var msdoc = null;
var vers = ["MSXML2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.3.0"];
for (var i = 0; i < vers.length; i++) {
try {
msdoc = new ActiveXObject(vers[i]);
break;
} catch (ex) {
}
}
if (!msdoc) {
throw new AjxException("FreeThreadedDOMDocument", AjxException.UNSUPPORTED, "AjxXslt");
}
msdoc.async = false;
doc._doc = msdoc;
}
this._doc = doc;
};
AjxXslt.prototype.toString =
function() {
return "AjxXslt";
};
AjxXslt.createFromUrl =
function(url) {
var xslt = new AjxXslt();
xslt.loadUrl(url);
return xslt;
};
AjxXslt.createFromString =
function(str) {
var xslt = new AjxXslt();
xslt._doc.loadFromString(str);
xslt.createProcessor();
return xslt;
};
AjxXslt.prototype.createProcessor =
function() {
var doc = this._doc.getDoc();
if (AjxEnv.isNav) {
this._processor = new XSLTProcessor();
this._processor.importStylesheet(doc);
} else if (AjxEnv.isIE) {
var err = doc.parseError;
if (err.errorCode != 0) {
DBG.println(AjxDebug.DBG1, "Parse error (" + err.reason +
") at line " + err.line +
", character " + err.linepos +
"\n" + err.srcText);
throw new AjxException(err.reason, AjxException.INVALID_PARAM, "AjxXslt.createProcessor");
}
var proc = null;
var vers = ["MSXML2.XSLTemplate.5.0", "MSXML2.XSLTemplate.3.0"];
for (var i = 0; i < vers.length; i++) {
try {
proc = new ActiveXObject(vers[i]);
break;
} catch (ex) {
}
}
if (!proc) {
throw new AjxException("XSLTemplate", AjxException.UNSUPPORTED, "AjxXslt.createProcessor");
}
this._processor = proc;
this._processor.stylesheet = doc;
}
};
AjxXslt._finishedLoading =
function() {
var xslt = this._xslt;
xslt.createProcessor();
};
AjxXslt.prototype.loadUrl =
function(url) {
var doc = this._doc;
if (AjxEnv.isNav) {
var docImpl = doc.getDoc();
docImpl._xslt = this;
docImpl.addEventListener("load", AjxXslt._finishedLoading, false);
}
doc.loadFromUrl(url);
if (AjxEnv.isIE) {
this.createProcessor();
}
};
AjxXslt.prototype.transformToDom =
function(dom) {
var ret;
if (AjxEnv.isIE) {
ret = this.transformIE(dom);
} else if (AjxEnv.isNav) {
return this.transformNav(dom);
} else {
DBG.println(AjxDebug.DBG1, "No XSL transformation due to browser incompatibility.");
return dom;
}
var doc = AjxXmlDoc.createFromXml(ret);
return doc.getDoc();
};
AjxXslt.prototype.transformToString =
function(dom) {
var ret;
if (AjxEnv.isIE) {
return this.transformIE(dom);
} else if (AjxEnv.isNav) {
ret = this.transformNav(dom);
} else {
DBG.println(AjxDebug.DBG1, "No XSL transformation due to browser incompatibility.");
return dom.documentElement.innerHTML;
}
if (!ret || !ret.documentElement) {
throw new AjxException("XSL transformation failed.", AjxException.INVALID_PARAM, "AjxXslt.transformToString");
}
var elem = ret.documentElement;
if ((elem instanceof HTMLElement) ||
(elem instanceof HTMLHtmlElement)) {
return elem.innerHTML;
} else if (elem instanceof Element) {
return elem.xml;
}
DBG.println(AjxDebug.DBG1, "Transformation resulted in non-element.");
return dom.documentElement.innerHTML;
};
AjxXslt.prototype.transformIE =
function(dom) {
try {
var xsltProc = this._processor.createProcessor();
xsltProc.input = dom;
xsltProc.transform();
return xsltProc.output;
} catch (exception) {
DBG.println(AjxDebug.DBG1, "Exception in XSL transformation: "+exception.description);
throw new AjxException(exception.description, AjxException.INVALID_PARAM, "AjxXslt.transformIE");
}
};
AjxXslt.prototype.transformNav =
function(dom) {
return this._processor.transformToDocument(dom);
};
AjxXslt.prototype.transformNav2 =
function(dom) {
this._fragment = document.implementation.createDocument("", "", null);
return this._processor.transformToFragment(dom, this._fragment);
};
Documentation generated by
JSDoc on Thu Apr 27 13:58:45 2006