Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by rencin on Oct 22, 2009 05:24
open dhtmlx forum
Incorrect XML error in htmlx scheduler

Hi
i have implemented sample dhtmlx scheduler in java with mysql database connection .But when the page load events are not loaded from the database.Instead it show an error message : "Error Type :Load XML Description :Incorrect XML"

/*$Rev$*/
dhtmlxAjax={
    get:function(url,callback){
        var t=new dtmlXMLLoaderObject(true);
        t.async=(arguments.length<3);
        t.waitCall=callback;
alert(url);
        t.loadXML(url)

        return t;
    },
    post:function(url,post,callback){
        var t=new dtmlXMLLoaderObject(true);
        t.async=(arguments.length<4);
        t.waitCall=callback;
t.loadXML(url,true,post)
return t;
    },
    getSync:function(url){
        return this.get(url,null,true)
    },
    postSync:function(url,post){
        return this.post(url,post,null,true);        
    }
}

/**
* @desc: xmlLoader object
* @type: private
* @param: funcObject - xml parser function
* @param: object - jsControl object
* @param: async - sync/async mode (async by default)
* @param: rSeed - enable/disable random seed ( prevent IE caching)
* @topic: 0
*/
function dtmlXMLLoaderObject(funcObject, dhtmlObject, async, rSeed){
    this.xmlDoc="";

    if (typeof (async) != "undefined")
        this.async=async;
    else
        this.async=true;

    this.onloadAction=funcObject||null;
    this.mainObject=dhtmlObject||null;
    this.waitCall=null;
    this.rSeed=rSeed||false;
    return this;
};
/**
* @desc: xml loading handler
* @type: private
* @param: dtmlObject - xmlLoader object
* @topic: 0
*/
dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){
    var once = true;
    this.check=function (){
        if ((dhtmlObject)&&(dhtmlObject.onloadAction != null)){
            if ((!dhtmlObject.xmlDoc.readyState)||(dhtmlObject.xmlDoc.readyState == 4)){
                if (!once)
                    return;

                once=false; //IE 5 fix
                if (typeof dhtmlObject.onloadAction == "function")
                    dhtmlObject.onloadAction(dhtmlObject.mainObject, null, null, null, dhtmlObject);

                if (dhtmlObject.waitCall){
                    dhtmlObject.waitCall.call(this,dhtmlObject);
                    dhtmlObject.waitCall=null;
                }
            }
        }
    };
    return this.check;
};

/**
* @desc: return XML top node
* @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla)
* @type: private
* @returns: top XML node
* @topic: 0
*/
dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName, oldObj){
    if (this.xmlDoc.responseXML){
        var temp = this.xmlDoc.responseXML.getElementsByTagName(tagName);
        if(temp.length==0 && tagName.indexOf(":")!=-1)
            var temp = this.xmlDoc.responseXML.getElementsByTagName((tagName.split(":"))[1]);
        var z = temp[0];
    } else
        var z = this.xmlDoc.documentElement;

    if (z){
        this._retry=false;
        return z;
    }

    if ((_isIE)&&(!this._retry)){
        //fall back to MS.XMLDOM
        var xmlString = this.xmlDoc.responseText;
        var oldObj = this.xmlDoc;
        this._retry=true;
        this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        this.xmlDoc.async=false;
        this.xmlDoc["loadXM"+"L"](xmlString);
alert("xmlString.."+xmlString);
        return this.getXMLTopNode(tagName, oldObj);
    }
    dhtmlxError.throwError("LoadXML", "Incorrect XML", [
        (oldObj||this.xmlDoc),
        this.mainObject
    ]);

    return document.createElement("DIV");
};

/**
* @desc: load XML from string
* @type: private
* @param: xmlString - xml string
* @topic: 0
*/
dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString){
    {
        try{
            var parser = new DOMParser();
            this.xmlDoc=parser.parseFromString(xmlString, "text/xml");
        }
        catch (e){
            this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            this.xmlDoc.async=this.async;
            this.xmlDoc["loadXM"+"L"](xmlString);
        }
    }

    this.onloadAction(this.mainObject, null, null, null, this);

    if (this.waitCall){
        this.waitCall();
        this.waitCall=null;
    }
}
/**
* @desc: load XML
* @type: private
* @param: filePath - xml file path
* @param: postMode - send POST request
* @param: postVars - list of vars for post request
* @topic: 0
*/
dtmlXMLLoaderObject.prototype.loadXML=function(filePath, postMode, postVars, rpc){

    if (this.rSeed)
        filePath+=((filePath.indexOf("?") != -1) ? "&" : "?")+"a_dhx_rSeed="+(new Date()).valueOf();
    this.filePath=filePath;

    if ((!_isIE)&&(window.XMLHttpRequest))
        this.xmlDoc=new XMLHttpRequest();
    else {
        if (document.implementation&&document.implementation.createDocument){
            this.xmlDoc=document.implementation.createDocument("", "", null);
            this.xmlDoc.onload=new this.waitLoadFunction(this);
            this.xmlDoc.load(filePath);
return;
        } else
            this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (this.async)
        this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);
    this.xmlDoc.open(postMode ? "POST" : "GET", filePath, this.async);

    if (rpc){
        this.xmlDoc.setRequestHeader("User-Agent", "dhtmlxRPC v0.1 ("+navigator.userAgent+")");
        this.xmlDoc.setRequestHeader("Content-type", "text/xml");
    }

    else if (postMode)
        this.xmlDoc.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        
    this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");
    this.xmlDoc.send(null||postVars);

    if (!this.async)
        (new this.waitLoadFunction(this))();
};
/**
* @desc: destructor, cleans used memory
* @type: private
* @topic: 0
*/
dtmlXMLLoaderObject.prototype.destructor=function(){
    this.onloadAction=null;
    this.mainObject=null;
    this.xmlDoc=null;
    return null;
}

dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function(node){
var t={};
for (var i=0; i<node.attributes.length; i++)
t[node.attributes[i].name]=node.attributes[i].value;
t["_tagvalue"]=node.firstChild?node.firstChild.nodeValue:"";
for (var i=0; i<node.childNodes.length; i++){
var name=node.childNodes[i].tagName;
if (name){
if (!t[name]) t[name]=[];
t[name].push(this.xmlNodeToJSON(node.childNodes[i]));
}
}
return t;
}

/**
* @desc: Call wrapper
* @type: private
* @param: funcObject - action handler
* @param: dhtmlObject - user data
* @returns: function handler
* @topic: 0
*/
function callerFunction(funcObject, dhtmlObject){
    this.handler=function(e){
        if (!e)
            e=window.event;
        funcObject(e, dhtmlObject);
        return true;
    };
    return this.handler;
};

/**
* @desc: Calculate absolute position of html object
* @type: private
* @param: htmlObject - html object
* @topic: 0
*/
function getAbsoluteLeft(htmlObject){
    var xPos = htmlObject.offsetLeft;
    var temp = htmlObject.offsetParent;

    while (temp != null){
        xPos+=temp.offsetLeft;
        temp=temp.offsetParent;
    }
    return xPos;
}
/**
* @desc: Calculate absolute position of html object
* @type: private
* @param: htmlObject - html object
* @topic: 0
*/
function getAbsoluteTop(htmlObject){
    var yPos = htmlObject.offsetTop;
    var temp = htmlObject.offsetParent;

    while (temp != null){
        yPos+=temp.offsetTop;
        temp=temp.offsetParent;
    }
    return yPos;
}


/**
* @desc: Convert string to it boolean representation
* @type: private
* @param: inputString - string for covertion
* @topic: 0
*/
function convertStringToBoolean(inputString){
    if (typeof (inputString) == "string")
        inputString=inputString.toLowerCase();

    switch (inputString){
        case "1":
        case "true":
        case "yes":
        case "y":
        case 1:
        case true:
            return true;
            break;

        default: return false;
    }
}

/**
* @desc: find out what symbol to use as url param delimiters in further params
* @type: private
* @param: str - current url string
* @topic: 0
*/
function getUrlSymbol(str){
    if (str.indexOf("?") != -1)
        return "&"
    else
        return "?"
}

function dhtmlDragAndDropObject(){
    if (window.dhtmlDragAndDrop)
        return window.dhtmlDragAndDrop;

    this.lastLanding=0;
    this.dragNode=0;
    this.dragStartNode=0;
    this.dragStartObject=0;
    this.tempDOMU=null;
    this.tempDOMM=null;
    this.waitDrag=0;
    window.dhtmlDragAndDrop=this;

    return this;
};

dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){
    htmlNode.onmousedown=null;
    htmlNode.dragStarter=null;
    htmlNode.dragLanding=null;
}
dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode, dhtmlObject){
    htmlNode.onmousedown=this.preCreateDragCopy;
    htmlNode.dragStarter=dhtmlObject;
    this.addDragLanding(htmlNode, dhtmlObject);
}
dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode, dhtmlObject){
    htmlNode.dragLanding=dhtmlObject;
}
dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e){
    if (e&&(e||event).button == 2)
        return;

    if (window.dhtmlDragAndDrop.waitDrag){
        window.dhtmlDragAndDrop.waitDrag=0;
        document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;
        document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;
        return false;
    }

    window.dhtmlDragAndDrop.waitDrag=1;
    window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;
    window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;
    window.dhtmlDragAndDrop.dragStartNode=this;
    window.dhtmlDragAndDrop.dragStartObject=this.dragStarter;
    document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;
    document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;

    if ((e)&&(e.preventDefault)){
        e.preventDefault();
        return false;
    }
    return false;
};
dhtmlDragAndDropObject.prototype.callDrag=function(e){
    if (!e)
        e=window.event;
    dragger=window.dhtmlDragAndDrop;

    if ((e.button == 0)&&(_isIE))
        return dragger.stopDrag();

    if (!dragger.dragNode&&dragger.waitDrag){
        dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode, e);

        if (!dragger.dragNode)
            return dragger.stopDrag();

        dragger.dragNode.onselectstart=function(){return false;}
        dragger.gldragNode=dragger.dragNode;
        document.body.appendChild(dragger.dragNode);
        document.body.onmouseup=dragger.stopDrag;
        dragger.waitDrag=0;
        dragger.dragNode.pWindow=window;
        dragger.initFrameRoute();
    }

    if (dragger.dragNode.parentNode != window.document.body){
        var grd = dragger.gldragNode;

        if (dragger.gldragNode.old)
            grd=dragger.gldragNode.old;

        //if (!document.all) dragger.calculateFramePosition();
        grd.parentNode.removeChild(grd);
        var oldBody = dragger.dragNode.pWindow;

        //        var oldp=dragger.dragNode.parentObject;
        if (_isIE){
            var div = document.createElement("Div");
            div.innerHTML=dragger.dragNode.outerHTML;
            dragger.dragNode=div.childNodes[0];
        } else
            dragger.dragNode=dragger.dragNode.cloneNode(true);

        dragger.dragNode.pWindow=window;
        //        dragger.dragNode.parentObject=oldp;

        dragger.gldragNode.old=dragger.dragNode;
        document.body.appendChild(dragger.dragNode);
        oldBody.dhtmlDragAndDrop.dragNode=dragger.dragNode;
    }

    dragger.dragNode.style.left=e.clientX+15+(dragger.fx
        ? dragger.fx*(-1)
        : 0)
        +(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";
    dragger.dragNode.style.top=e.clientY+3+(dragger.fy
        ? dragger.fy*(-1)
        : 0)
        +(document.body.scrollTop||document.documentElement.scrollTop)+"px";

    if (!e.srcElement)
        var z = e.target;
    else
        z=e.srcElement;
    dragger.checkLanding(z, e);
}

dhtmlDragAndDropObject.prototype.calculateFramePosition=function(n){
    //this.fx = 0, this.fy = 0;
    if (window.name){
        var el = parent.frames[window.name].frameElement.offsetParent;
        var fx = 0;
        var fy = 0;

        while (el){
            fx+=el.offsetLeft;
            fy+=el.offsetTop;
            el=el.offsetParent;
        }

        if ((parent.dhtmlDragAndDrop)){
            var ls = parent.dhtmlDragAndDrop.calculateFramePosition(1);
            fx+=ls.split('_')[0]*1;
            fy+=ls.split('_')[1]*1;
        }

        if (n)
            return fx+"_"+fy;
        else
            this.fx=fx;
        this.fy=fy;
    }
    return "0_0";
}
dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject, e){
    if ((htmlObject)&&(htmlObject.dragLanding)){
        if (this.lastLanding)
            this.lastLanding.dragLanding._dragOut(this.lastLanding);
        this.lastLanding=htmlObject;
        this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, e.clientX,
            e.clientY, e);
        this.lastLanding_scr=(_isIE ? e.srcElement : e.target);
    } else {
        if ((htmlObject)&&(htmlObject.tagName != "BODY"))
            this.checkLanding(htmlObject.parentNode, e);
        else {
            if (this.lastLanding)
                this.lastLanding.dragLanding._dragOut(this.lastLanding, e.clientX, e.clientY, e);
            this.lastLanding=0;

            if (this._onNotFound)
                this._onNotFound();
        }
    }
}
dhtmlDragAndDropObject.prototype.stopDrag=function(e, mode){
    dragger=window.dhtmlDragAndDrop;

    if (!mode){
        dragger.stopFrameRoute();
        var temp = dragger.lastLanding;
        dragger.lastLanding=null;

        if (temp)
            temp.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, temp, (_isIE
                ? event.srcElement
                : e.target));
    }
    dragger.lastLanding=null;

    if ((dragger.dragNode)&&(dragger.dragNode.parentNode == document.body))
        dragger.dragNode.parentNode.removeChild(dragger.dragNode);
    dragger.dragNode=0;
    dragger.gldragNode=0;
    dragger.fx=0;
    dragger.fy=0;
    dragger.dragStartNode=0;
    dragger.dragStartObject=0;
    document.body.onmouseup=dragger.tempDOMU;
    document.body.onmousemove=dragger.tempDOMM;
    dragger.tempDOMU=null;
    dragger.tempDOMM=null;
    dragger.waitDrag=0;
}

dhtmlDragAndDropObject.prototype.stopFrameRoute=function(win){
    if (win)
        window.dhtmlDragAndDrop.stopDrag(1, 1);

    for (var i = 0; i < window.frames.length; i++)
        if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
            window.frames[i].dhtmlDragAndDrop.stopFrameRoute(window);

    if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
        parent.dhtmlDragAndDrop.stopFrameRoute(window);
}
dhtmlDragAndDropObject.prototype.initFrameRoute=function(win, mode){
    if (win){
        window.dhtmlDragAndDrop.preCreateDragCopy();
        window.dhtmlDragAndDrop.dragStartNode=win.dhtmlDragAndDrop.dragStartNode;
        window.dhtmlDragAndDrop.dragStartObject=win.dhtmlDragAndDrop.dragStartObject;
        window.dhtmlDragAndDrop.dragNode=win.dhtmlDragAndDrop.dragNode;
        window.dhtmlDragAndDrop.gldragNode=win.dhtmlDragAndDrop.dragNode;
        window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;
        window.waitDrag=0;

        if (((!_isIE)&&(mode))&&((!_isFF)||(_FFrv < 1.8)))
            window.dhtmlDragAndDrop.calculateFramePosition();
    }

    if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
        parent.dhtmlDragAndDrop.initFrameRoute(window);

    for (var i = 0; i < window.frames.length; i++)
        if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
            window.frames[i].dhtmlDragAndDrop.initFrameRoute(window, ((!win||mode) ? 1 : 0));
}

var _isFF = false;
var _isIE = false;
var _isOpera = false;
var _isKHTML = false;
var _isMacOS = false;

if (navigator.userAgent.indexOf('Macintosh') != -1)
    _isMacOS=true;

if ((navigator.userAgent.indexOf('Safari') != -1)||(navigator.userAgent.indexOf('Konqueror') != -1)){
    var _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Safari')+7, 5));

    if (_KHTMLrv > 525){ //mimic FF behavior for Safari 3.1+
        _isFF=true;
        var _FFrv = 1.9;
    } else
        _isKHTML=true;
} else if (navigator.userAgent.indexOf('Opera') != -1){
    _isOpera=true;
    _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6, 3));
}


else if (navigator.appName.indexOf("Microsoft") != -1){
    _isIE=true;
    if (navigator.appVersion.indexOf("MSIE 8.0")!= -1 && document.compatMode != "BackCompat") _isIE=8;
} else {
    _isFF=true;
    var _FFrv = parseFloat(navigator.userAgent.split("rv:")[1])
}


//multibrowser Xpath processor
dtmlXMLLoaderObject.prototype.doXPath=function(xpathExp, docObj, namespace, result_type){
    if ((_isKHTML))
        return this.doXPathOpera(xpathExp, docObj);

    if (_isIE){ //IE
        if (!docObj)
            if (!this.xmlDoc.nodeName)
                docObj=this.xmlDoc.responseXML
            else
                docObj=this.xmlDoc;

        if (!docObj)
            dhtmlxError.throwError("LoadXML", "Incorrect XML", [
                (docObj||this.xmlDoc),
                this.mainObject
            ]);

        if (namespace != null)
            docObj.setProperty("SelectionNamespaces", "xmlns:xsl='"+namespace+"'"); //

        if (result_type == 'single'){
            return docObj.selectSingleNode(xpathExp);
        }
        else {
            return docObj.selectNodes(xpathExp)||new Array(0);
        }
    } else { //Mozilla
        var nodeObj = docObj;

        if (!docObj){
            if (!this.xmlDoc.nodeName){
                docObj=this.xmlDoc.responseXML
            }
            else {
                docObj=this.xmlDoc;
            }
        }

        if (!docObj)
            dhtmlxError.throwError("LoadXML", "Incorrect XML", [
                (docObj||this.xmlDoc),
                this.mainObject
            ]);

        if (docObj.nodeName.indexOf("document") != -1){
            nodeObj=docObj;
        }
        else {
            nodeObj=docObj;
            docObj=docObj.ownerDocument;
        }
        var retType = XPathResult.ANY_TYPE;

        if (result_type == 'single')
            retType=XPathResult.FIRST_ORDERED_NODE_TYPE
        var rowsCol = new Array();
        var col = docObj.evaluate(xpathExp, nodeObj, function(pref){
            return namespace
        }, retType, null);

        if (retType == XPathResult.FIRST_ORDERED_NODE_TYPE){
            return col.singleNodeValue;
        }
        var thisColMemb = col.iterateNext();

        while (thisColMemb){
            rowsCol[rowsCol.length]=thisColMemb;
            thisColMemb=col.iterateNext();
        }
        return rowsCol;
    }
}

function _dhtmlxError(type, name, params){
    if (!this.catches)
        this.catches=new Array();

    return this;
}

_dhtmlxError.prototype.catchError=function(type, func_name){
    this.catches[type]=func_name;
}
_dhtmlxError.prototype.throwError=function(type, name, params){
    if (this.catches[type])
        return this.catches[type](type, name, params);

    if (this.catches["ALL"])
        return this.catches["ALL"](type, name, params);

    alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]);
    return null;
}

window.dhtmlxError=new _dhtmlxError();


//opera fake, while 9.0 not released
//multibrowser Xpath processor
dtmlXMLLoaderObject.prototype.doXPathOpera=function(xpathExp, docObj){
    //this is fake for Opera
    var z = xpathExp.replace(/[\/]+/gi, "/").split('/');
    var obj = null;
    var i = 1;

    if (!z.length)
        return [];

    if (z[0] == ".")
        obj=[docObj]; else if (z[0] == ""){
        obj=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(z[i].replace(/\[[^\]]*\]/g, ""));
        i++;
    } else
        return [];

    for (i; i < z.length; i++)obj=this._getAllNamedChilds(obj, z[i]);

    if (z[i-1].indexOf("[") != -1)
        obj=this._filterXPath(obj, z[i-1]);
    return obj;
}

dtmlXMLLoaderObject.prototype._filterXPath=function(a, b){
    var c = new Array();
    var b = b.replace(/[^\[]*\[\@/g, "").replace(/[\[\]\@]*/g, "");

    for (var i = 0; i < a.length; i++)
        if (a[i].getAttribute(b))
            c[c.length]=a[i];

    return c;
}
dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a, b){
    var c = new Array();

    if (_isKHTML)
        b=b.toUpperCase();

    for (var i = 0; i < a.length; i++)for (var j = 0; j < a[i].childNodes.length; j++){
        if (_isKHTML){
            if (a[i].childNodes[j].tagName&&a[i].childNodes[j].tagName.toUpperCase() == b)
                c[c.length]=a[i].childNodes[j];
        }

        else if (a[i].childNodes[j].tagName == b)
            c[c.length]=a[i].childNodes[j];
    }

    return c;
}

function dhtmlXHeir(a, b){
    for (var c in b)
        if (typeof (b[c]) == "function")
            a[c]=b[c];
    return a;
}

function dhtmlxEvent(el, event, handler){
    if (el.addEventListener)
        el.addEventListener(event, handler, false);

    else if (el.attachEvent)
        el.attachEvent("on"+event, handler);
}

//============= XSL Extension ===================================

dtmlXMLLoaderObject.prototype.xslDoc=null;
dtmlXMLLoaderObject.prototype.setXSLParamValue=function(paramName, paramValue, xslDoc){
    if (!xslDoc)
        xslDoc=this.xslDoc

    if (xslDoc.responseXML)
        xslDoc=xslDoc.responseXML;
    var item =
        this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+paramName+"']", xslDoc,
            "http:/\/www.w3.org/1999/XSL/Transform", "single");

    if (item != null)
        item.firstChild.nodeValue=paramValue
}
dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(xslDoc, xmlDoc){
    if (!xslDoc)
        xslDoc=this.xslDoc;

    if (xslDoc.responseXML)
        xslDoc=xslDoc.responseXML

    if (!xmlDoc)
        xmlDoc=this.xmlDoc;

    if (xmlDoc.responseXML)
        xmlDoc=xmlDoc.responseXML

    //MOzilla
    if (!_isIE){
        if (!this.XSLProcessor){
            this.XSLProcessor=new XSLTProcessor();
            this.XSLProcessor.importStylesheet(xslDoc);
        }
        var result = this.XSLProcessor.transformToDocument(xmlDoc);
    } else {
        var result = new ActiveXObject("Msxml2.DOMDocument.3.0");
        try{
            xmlDoc.transformNodeToObject(xslDoc, result);
        }catch(e){
            result = xmlDoc.transformNode(xslDoc);
        }
    }
    return result;
}

dtmlXMLLoaderObject.prototype.doXSLTransToString=function(xslDoc, xmlDoc){
    var res = this.doXSLTransToObject(xslDoc, xmlDoc);
    if(typeof(res)=="string")
        return res;
    return this.doSerialization(res);
}

dtmlXMLLoaderObject.prototype.doSerialization=function(xmlDoc){
    if (!xmlDoc)
            xmlDoc=this.xmlDoc;
    if (xmlDoc.responseXML)
            xmlDoc=xmlDoc.responseXML
    if (!_isIE){
        var xmlSerializer = new XMLSerializer();
        return xmlSerializer.serializeToString(xmlDoc);
    } else
        return xmlDoc.xml;
}

/**
* @desc:
* @type: private
*/
dhtmlxEventable=function(obj){
        obj.dhx_SeverCatcherPath="";
        obj.attachEvent=function(name, catcher, callObj){
            name='ev_'+name.toLowerCase();
            if (!this[name])
                this[name]=new this.eventCatcher(callObj||this);
                
            return(name+':'+this[name].addEvent(catcher)); //return ID (event name & event ID)
        }
        obj.callEvent=function(name, arg0){
            name='ev_'+name.toLowerCase();
            if (this[name])
                return this[name].apply(this, arg0);
            return true;
        }
        obj.checkEvent=function(name){
            return (!!this['ev_'+name.toLowerCase()])
        }
        obj.eventCatcher=function(obj){
            var dhx_catch = [];
            var z = function(){
                var res = true;
                for (var i = 0; i < dhx_catch.length; i++){
                    if (dhx_catch[i] != null){
                        var zr = dhx_catch[i].apply(obj, arguments);
                        res=res&&zr;
                    }
                }
                return res;
            }
            z.addEvent=function(ev){
                if (typeof (ev) != "function")
                    ev=eval(ev);
                if (ev)
                    return dhx_catch.push(ev)-1;
                return false;
            }
            z.removeEvent=function(id){
                dhx_catch[id]=null;
            }
            return z;
        }
        obj.detachEvent=function(id){
            if (id != false){
                var list = id.split(':'); //get EventName and ID
                this[list[0]].removeEvent(list[1]); //remove event
            }
        }
}


/**
    *     @desc: constructor, data processor object
    *    @param: serverProcessorURL - url used for update
    *    @type: public
    */
function dataProcessor(serverProcessorURL){
this.serverProcessor = serverProcessorURL;
this.action_param="!nativeeditor_status";

    this.obj = null;
    this.updatedRows = []; //ids of updated rows
    
    this.autoUpdate = true;
    this.updateMode = "cell";
    this._tMode="GET";
    
this._waitMode=0;
this._in_progress={};//?
this._invalid={};
this.mandatoryFields=[];
this.messages=[];

this.styles={
    updated:"font-weight:bold;",
    inserted:"font-weight:bold;",
    deleted:"text-decoration : line-through;",
    invalid:"background-color:FFE0E0;",
    invalid_cell:"border-bottom:2px solid red;",
    error:"color:red;",
    clear:"font-weight:normal;text-decoration:none;"
}

this.enableUTFencoding(true);
dhtmlxEventable(this);

return this;
}

dataProcessor.prototype={
    /**
    *     @desc: select GET or POST transaction model
    *    @param: mode - GET/POST
    *    @param: total - true/false - send records row by row or all at once (for grid only)
    *    @type: public
    */
    setTransactionMode:function(mode,total){
this._tMode=mode;
        this._tSend=total;
},
escape:function(data){
    if (this._utf)
        return encodeURIComponent(data);
    else
    return escape(data);
    },
/**
    *     @desc: allows to set escaping mode
    *    @param: true - utf based escaping, simple - use current page encoding
    *    @type: public
    */    
    enableUTFencoding:function(mode){
this._utf=convertStringToBoolean(mode);
},
/**
    *     @desc: allows to define, which column may trigger update
    *    @param: val - array or list of true/false values
    *    @type: public
    */
    setDataColumns:function(val){
        this._columns=(typeof val == "string")?val.split(","):val;
},
/**
    *     @desc: get state of updating
    *    @returns: true - all in sync with server, false - some items not updated yet.
    *    @type: public
    */
    getSyncState:function(){
        return !this.updatedRows.length;
    },
    /**
    *     @desc: enable/disable named field for data syncing, will use column ids for grid
    *    @param: mode - true/false
    *    @type: public
    */
    enableDataNames:function(mode){
        this._endnm=convertStringToBoolean(mode);
    },
    /**
    *     @desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode
    *    @param: mode - true/false
    *    @type: public
    */
    enablePartialDataSend:function(mode){
        this._changed=convertStringToBoolean(mode);
    },
    /**
    *     @desc: set if rows should be send to server automaticaly
    *    @param: mode - "row" - based on row selection changed, "cell" - based on cell editing finished, "off" - manual data sending
    *    @type: public
    */
    setUpdateMode:function(mode,dnd){
        this.autoUpdate = (mode=="cell");
        this.updateMode = mode;
        this.dnd=dnd;
    },
    /**
    *     @desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)
    *    @param: rowId - id of row to set update-status for
    *    @param: state - true for "updated", false for "not updated"
    *    @param: mode - update mode name
    *    @type: public
    */
    setUpdated:function(rowId,state,mode){
        var ind=this.findRow(rowId);
        
        mode=mode||"updated";
        var existing = this.obj.getUserData(rowId,this.action_param);
        if (existing && mode == "updated") mode=existing;
            
        if (state){
            this.set_invalid(rowId,false); //clear previous error flag
            this.updatedRows[ind]=rowId;
            this.obj.setUserData(rowId,this.action_param,mode);
        } else{
            if (!this.is_invalid(rowId)){
                this.updatedRows.splice(ind,1);
                this.obj.setUserData(rowId,this.action_param,"");
            }
        }

        //clear changed flag
        if (!state)
            this._clearUpdateFlag(rowId);
            
        this.markRow(rowId,state,mode);
        if (state && this.autoUpdate) this.sendData(rowId);
    },
    _clearUpdateFlag:function(){
        if (this.obj.mytype!="tree"){
    var row=this.obj.getRowById(rowId);
if (row)
         for (var j=0; j<this.obj._cCount; j++)
        this.obj.cells(rowId,j).cell.wasChanged=false;    //using cells because of split
    }            
    },
    markRow:function(id,state,mode){
        var str="";
        var invalid=this.is_invalid(id)
        if (invalid){
    str=this.styles[invalid]
    state=true;
    }
        if (this.callEvent("onRowMark",[id,state,mode,invalid])){
            //default logic
            if (state)
                str+=this.styles[mode];
            else
        str+=this.styles.clear;
    this.obj[this._methods[0]](id,str);

            if (invalid && invalid.details){
                str+=this.styles[invalid+"_cell"];
                for (var i=0; i < invalid.details.length; i++)
                    if (invalid.details[i])
                this.obj[this._methods[1]](id,i,str);
            }
        }
    },
    getState:function(id){
        return this.obj.getUserData(id,this.action_param);
    },
    is_invalid:function(id){
        return this._invalid[id];
    },
    set_invalid:function(id,mode,details){
        if (details) mode={value:mode, details:details, toString:function(){ return this.value.toString(); }}
        this._invalid[id]=mode;
    },
    /**
    *     @desc: check mandatory fields and varify values of cells, initiate update (if specified)
    *    @param: rowId - id of row to set update-status for
    *    @type: public
    */
    checkBeforeUpdate:function(rowId){
        var valid=true; var c_invalid=[];
        for (var i=0; i<this.obj._cCount; i++)
            if (this.mandatoryFields[i]){
                var res=this.mandatoryFields[i](this.obj.cells(rowId,i).getValue(),rowId,i);
                if (typeof res == "string")
                    this.messages.push(res);
                else {
                    valid&=res;
                    c_invalid[i]=!res;
                }
            }
        if (!valid){
            this.set_invalid(rowId,"invalid",c_invalid);
            this.setUpdated(rowId,false);
        }
        return valid;
    },
    /**
    *     @desc: send row(s) values to server
    *    @param: rowId - id of row which data to send. If not specified, then all "updated" rows will be send
    *    @type: public
    */
    sendData:function(rowId){
alert("sendData.."+rowId);
        if (this._waitMode && (this.obj.mytype=="tree" || this.obj._h2)) return;
        if (this.obj.editStop) this.obj.editStop();
        if (this.obj.linked_form) this.obj.linked_form.update();
        
Answer posted by Stanislav (support) on Oct 22, 2009 05:46
Such error occurs if xml stream is incorrect ( incorrect syntax or encoding problems ) - you can try to load the same URL in separate window of browser, it will provide exta information about reasons of the problem.