/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object xml()  * @type xml  * @super Object  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535918.aspx*/function xml(){};xml.prototype= new Object();/**  * Property canHaveHTML  * @type Boolean  * @returns {Boolean}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537836.aspx*/xml.prototype.canHaveHTML=false;/**  * Property id  * @type String  * @returns {String}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533880.aspx*/xml.prototype.id="";/**  * Property isContentEditable  * @type Boolean  * @returns {Boolean}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537838.aspx*/xml.prototype.isContentEditable=false;/**  * Property isDisabled  * @type Boolean  * @returns {Boolean}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533902.aspx*/xml.prototype.isDisabled=false;/**  * Property isMultiLine  * @type Boolean  * @returns {Boolean}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537839.aspx*/xml.prototype.isMultiLine=false;/**  * Property parentElement  * @type Object  * @returns {Object}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534327.aspx*/xml.prototype.parentElement=new Object();/**  * Property readyState  * @type Object  * @returns {Object}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534358.aspx*/xml.prototype.readyState=new Object();/**  * Property recordset  * @type recordset  * @returns {recordset}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534364.aspx*/xml.prototype.recordset= new recordset();/**  * Property scopeName  * @type String  * @returns {String}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534388.aspx*/xml.prototype.scopeName="";/**  * Property src  * @type String  * @returns {String}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534643.aspx*/xml.prototype.src="";/**  * Property tagUrn  * @type String  * @returns {String}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534658.aspx*/xml.prototype.tagUrn="";/**  * Property XMLDocument  * @type Object  * @returns {Object}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535155.aspx*/xml.prototype.XMLDocument=new Object();/**  * function addBehavior(sUrl)  * @param {String} sUrl  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535922.aspx*/xml.prototype.addBehavior=function(sUrl){};/**  * function componentFromPoint(iCoordX,iCoordY)  * @param {Number} iCoordX  * @param {Number} iCoordY  * @type String  * @returns {String}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536375.aspx*/xml.prototype.componentFromPoint=function(iCoordX,iCoordY){};/**  * function fireEvent(sEvent,oEventObject)  * @param {String} sEvent  * @param {event} oEventObject  * @type Boolean  * @returns {Boolean}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536423.aspx*/xml.prototype.fireEvent=function(sEvent,oEventObject){};/**  * function getAttributeNode(sName)  * @param {String} sName  * @type attribute  * @returns {attribute}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536430.aspx*/xml.prototype.getAttributeNode=function(sName){};/**  * Property attribute  * @type attribute  * @returns {attribute}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535187.aspx*/xml.prototype.attribute= new attribute();/**  * Property name  * @type String  * @returns {String}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534184.aspx*/xml.prototype.name="";/**  * function namedRecordset(sQualifier,sSubChapter)  * @param {String} sQualifier  * @param {String} sSubChapter  * @type Object  * @returns {Object}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536636.aspx*/xml.prototype.namedRecordset=function(sQualifier,sSubChapter){};/**  * function normalize()  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536646.aspx*/xml.prototype.normalize=function(){};/**  * Property TextNode  * @type TextNode  * @returns {TextNode}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535905.aspx*/xml.prototype.TextNode= new TextNode();/**  * function removeAttributeNode(oSrcAttribute)  * @param {attribute} oSrcAttribute  * @type attribute  * @returns {attribute}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536698.aspx*/xml.prototype.removeAttributeNode=function(oSrcAttribute){};/**  * function removeBehavior(iID)  * @param {Number} iID  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536700.aspx*/xml.prototype.removeBehavior=function(iID){};/**  * function setAttributeNode(oSrcAttribute)  * @param {attribute} oSrcAttribute  * @type attribute  * @returns {attribute}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536741.aspx*/xml.prototype.setAttributeNode=function(oSrcAttribute){};/**  * Property ondataavailable  * @type ondataavailable  * @returns {ondataavailable}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536918.aspx*/xml.prototype.ondataavailable= new ondataavailable();/**  * Property ondatasetchanged  * @type ondatasetchanged  * @returns {ondatasetchanged}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536919.aspx*/xml.prototype.ondatasetchanged= new ondatasetchanged();/**  * Property ondatasetcomplete  * @type ondatasetcomplete  * @returns {ondatasetcomplete}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536920.aspx*/xml.prototype.ondatasetcomplete= new ondatasetcomplete();/**  * Property onreadystatechange  * @type onreadystatechange  * @returns {onreadystatechange}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536957.aspx*/xml.prototype.onreadystatechange= new onreadystatechange();/**  * Property onrowenter  * @type onrowenter  * @returns {onrowenter}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536962.aspx*/xml.prototype.onrowenter= new onrowenter();/**  * Property onrowexit  * @type onrowexit  * @returns {onrowexit}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536963.aspx*/xml.prototype.onrowexit= new onrowexit();/**  * Property onrowsdelete  * @type onrowsdelete  * @returns {onrowsdelete}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536964.aspx*/xml.prototype.onrowsdelete= new onrowsdelete();/**  * Property onrowsinserted  * @type onrowsinserted  * @returns {onrowsinserted}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536965.aspx*/xml.prototype.onrowsinserted= new onrowsinserted();/**  * Property behaviorUrns  * @type behaviorUrns  * @returns {behaviorUrns}
  * @memberOf xml  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537439.aspx*/xml.prototype.behaviorUrns= new behaviorUrns();