* Internal interface which returns a DOM for a given DTMManager and translet.
*/
protected DOM getDOM(XSLTCDTMManager dtmManager, AbstractTranslet translet)
throws SAXException
{
SAXImpl idom = (SAXImpl)_dom.get();
if (idom != null) {
if (dtmManager != null) {
idom.migrateTo(dtmManager);
}
}
else {
Source source = _source;
if (source == null) {
if (_systemId != null && _systemId.length() > 0) {
source = new StreamSource(_systemId);
}
else {
ErrorMsg err = new ErrorMsg(ErrorMsg.XSLTC_SOURCE_ERR);
throw new SAXException(err.toString());
}
}
DOMWSFilter wsfilter = null;
if (translet != null && translet instanceof StripFilter) {
wsfilter = new DOMWSFilter(translet);
}
boolean hasIdCall = (translet != null) ? translet.hasIdCall() : false;
if (dtmManager == null) {
dtmManager = XSLTCDTMManager.newInstance();
}
idom = (SAXImpl)dtmManager.getDTM(source, true, wsfilter, false, false, hasIdCall);
String systemId = getSystemId();
if (systemId != null) {
idom.setDocumentURI(systemId);
}
_dom.set(idom);
}
return idom;
}