<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_Tutorial%2FXML%2FDOM</id>
		<title>JavaScript Tutorial/XML/DOM - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_Tutorial%2FXML%2FDOM"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_Tutorial/XML/DOM&amp;action=history"/>
		<updated>2026-04-04T20:02:05Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_Tutorial/XML/DOM&amp;diff=8847&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_Tutorial/XML/DOM&amp;diff=8847&amp;oldid=prev"/>
				<updated>2010-05-26T08:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 08:24, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_Tutorial/XML/DOM&amp;diff=8846&amp;oldid=prev</id>
		<title> в 18:52, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_Tutorial/XML/DOM&amp;diff=8846&amp;oldid=prev"/>
				<updated>2010-05-25T18:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Basic XML DOM Usage with zXml Library==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.0 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Basic XML DOM Usage&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
/*------------------------------------------------------------------------------&lt;br /&gt;
 * JavaScript zXml Library&lt;br /&gt;
 * Version 1.0.2&lt;br /&gt;
 * by Nicholas C. Zakas, http://www.nczonline.net/&lt;br /&gt;
 * Copyright (c) 2004-2006 Nicholas C. Zakas. All Rights Reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 * the Free Software Foundation; either version 2.1 of the License, or&lt;br /&gt;
 * (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 * GNU Lesser General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 * You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 * along with this program; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA&lt;br /&gt;
 *------------------------------------------------------------------------------&lt;br /&gt;
 */  &lt;br /&gt;
 &lt;br /&gt;
var zXml /*:Object*/ = {&lt;br /&gt;
    useActiveX: (typeof ActiveXObject != &amp;quot;undefined&amp;quot;),&lt;br /&gt;
    useDom: document.implementation &amp;amp;&amp;amp; document.implementation.createDocument,&lt;br /&gt;
    useXmlHttp: (typeof XMLHttpRequest != &amp;quot;undefined&amp;quot;)&lt;br /&gt;
};&lt;br /&gt;
zXml.ARR_XMLHTTP_VERS /*:Array*/ = [&amp;quot;MSXML2.XmlHttp.6.0&amp;quot;,&amp;quot;MSXML2.XmlHttp.3.0&amp;quot;];&lt;br /&gt;
zXml.ARR_DOM_VERS /*:Array*/ = [&amp;quot;MSXML2.DOMDocument.6.0&amp;quot;,&amp;quot;MSXML2.DOMDocument.3.0&amp;quot;];&lt;br /&gt;
                   &lt;br /&gt;
/**&lt;br /&gt;
 * Static class for handling XMLHttp creation.&lt;br /&gt;
 * @class&lt;br /&gt;
 */                     &lt;br /&gt;
function zXmlHttp() {&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Creates an XMLHttp object.&lt;br /&gt;
 * @return An XMLHttp object.&lt;br /&gt;
 */&lt;br /&gt;
zXmlHttp.createRequest = function ()/*:XMLHttp*/ {&lt;br /&gt;
    //if it natively supports XMLHttpRequest object&lt;br /&gt;
    if (zXml.useXmlHttp) {&lt;br /&gt;
        return new XMLHttpRequest();&lt;br /&gt;
    } else if (zXml.useActiveX) { //IE &amp;lt; 7.0 = use ActiveX&lt;br /&gt;
  &lt;br /&gt;
        if (!zXml.XMLHTTP_VER) {&lt;br /&gt;
            for (var i=0; i &amp;lt; zXml.ARR_XMLHTTP_VERS.length; i++) {&lt;br /&gt;
                try {&lt;br /&gt;
                    new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]);&lt;br /&gt;
                    zXml.XMLHTTP_VER = zXml.ARR_XMLHTTP_VERS[i];&lt;br /&gt;
                    break;&lt;br /&gt;
                } catch (oError) {                &lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if (zXml.XMLHTTP_VER) {&lt;br /&gt;
            return new ActiveXObject(zXml.XMLHTTP_VER);&lt;br /&gt;
        } else {&lt;br /&gt;
            throw new Error(&amp;quot;Could not create XML HTTP Request.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        throw new Error(&amp;quot;Your browser doesn&amp;quot;t support an XML HTTP Request.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
 * Indicates if XMLHttp is available.&lt;br /&gt;
 * @return True if XMLHttp is available, false if not.&lt;br /&gt;
 */&lt;br /&gt;
zXmlHttp.isSupported = function ()/*:Boolean*/ {&lt;br /&gt;
    return zXml.useXmlHttp || zXml.useActiveX;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Static class for handling XML DOM creation.&lt;br /&gt;
 * @class&lt;br /&gt;
 */&lt;br /&gt;
function zXmlDom() {&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Creates an XML DOM document.&lt;br /&gt;
 * @return An XML DOM document.&lt;br /&gt;
 */&lt;br /&gt;
zXmlDom.createDocument = function () /*:XMLDocument*/{&lt;br /&gt;
    if (zXml.useDom) {&lt;br /&gt;
        var oXmlDom = document.implementation.createDocument(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,null);&lt;br /&gt;
        oXmlDom.parseError = {&lt;br /&gt;
            valueOf: function () { return this.errorCode; },&lt;br /&gt;
            toString: function () { return this.errorCode.toString() }&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        oXmlDom.__initError__();&lt;br /&gt;
                &lt;br /&gt;
        oXmlDom.addEventListener(&amp;quot;load&amp;quot;, function () {&lt;br /&gt;
            this.__checkForErrors__();&lt;br /&gt;
            this.__changeReadyState__(4);&lt;br /&gt;
        }, false);&lt;br /&gt;
        return oXmlDom;        &lt;br /&gt;
        &lt;br /&gt;
    } else if (zXml.useActiveX) {&lt;br /&gt;
        if (!zXml.DOM_VER) {&lt;br /&gt;
            for (var i=0; i &amp;lt; zXml.ARR_DOM_VERS.length; i++) {&lt;br /&gt;
                try {&lt;br /&gt;
                    new ActiveXObject(zXml.ARR_DOM_VERS[i]);&lt;br /&gt;
                    zXml.DOM_VER = zXml.ARR_DOM_VERS[i];&lt;br /&gt;
                    break;&lt;br /&gt;
                } catch (oError) {                &lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if (zXml.DOM_VER) {&lt;br /&gt;
            return new ActiveXObject(zXml.DOM_VER);&lt;br /&gt;
        } else {&lt;br /&gt;
            throw new Error(&amp;quot;Could not create XML DOM document.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        throw new Error(&amp;quot;Your browser doesn&amp;quot;t support an XML DOM document.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
 * Indicates if an XML DOM is available.&lt;br /&gt;
 * @return True if XML DOM is available, false if not.&lt;br /&gt;
 */&lt;br /&gt;
zXmlDom.isSupported = function ()/*:Boolean*/ {&lt;br /&gt;
    return zXml.useDom || zXml.useActiveX;&lt;br /&gt;
};&lt;br /&gt;
//Code to make Mozilla DOM documents act more like MS DOM documents.&lt;br /&gt;
var oMozDocument = null;&lt;br /&gt;
if (typeof XMLDocument != &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
    oMozDocument = XMLDocument;&lt;br /&gt;
} else if (typeof Document != &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
    oMozDocument = Document;&lt;br /&gt;
}&lt;br /&gt;
if (oMozDocument &amp;amp;&amp;amp; !window.opera) {&lt;br /&gt;
    oMozDocument.prototype.readyState = 0;&lt;br /&gt;
    oMozDocument.prototype.onreadystatechange = null;&lt;br /&gt;
    oMozDocument.prototype.__changeReadyState__ = function (iReadyState) {&lt;br /&gt;
        this.readyState = iReadyState;&lt;br /&gt;
        if (typeof this.onreadystatechange == &amp;quot;function&amp;quot;) {&lt;br /&gt;
            this.onreadystatechange();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    oMozDocument.prototype.__initError__ = function () {&lt;br /&gt;
        this.parseError.errorCode = 0;&lt;br /&gt;
        this.parseError.filepos = -1;&lt;br /&gt;
        this.parseError.line = -1;&lt;br /&gt;
        this.parseError.linepos = -1;&lt;br /&gt;
        this.parseError.reason = null;&lt;br /&gt;
        this.parseError.srcText = null;&lt;br /&gt;
        this.parseError.url = null;&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    oMozDocument.prototype.__checkForErrors__ = function () {&lt;br /&gt;
        if (this.documentElement.tagName == &amp;quot;parsererror&amp;quot;) {&lt;br /&gt;
            var reError = /&amp;gt;([\s\S]*?)Location:([\s\S]*?)Line Number (\d+), Column (\d+):&amp;lt;sourcetext&amp;gt;([\s\S]*?)(?:\-*\^)/;&lt;br /&gt;
            reError.test(this.xml);&lt;br /&gt;
            &lt;br /&gt;
            this.parseError.errorCode = -999999;&lt;br /&gt;
            this.parseError.reason = RegExp.$1;&lt;br /&gt;
            this.parseError.url = RegExp.$2;&lt;br /&gt;
            this.parseError.line = parseInt(RegExp.$3);&lt;br /&gt;
            this.parseError.linepos = parseInt(RegExp.$4);&lt;br /&gt;
            this.parseError.srcText = RegExp.$5;&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
            &lt;br /&gt;
    oMozDocument.prototype.loadXML = function (sXml) {&lt;br /&gt;
    &lt;br /&gt;
        this.__initError__();&lt;br /&gt;
    &lt;br /&gt;
        this.__changeReadyState__(1);&lt;br /&gt;
    &lt;br /&gt;
        var oParser = new DOMParser();&lt;br /&gt;
        var oXmlDom = oParser.parseFromString(sXml, &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
        while (this.firstChild) {&lt;br /&gt;
            this.removeChild(this.firstChild);&lt;br /&gt;
        }&lt;br /&gt;
        for (var i=0; i &amp;lt; oXmlDom.childNodes.length; i++) {&lt;br /&gt;
            var oNewNode = this.importNode(oXmlDom.childNodes[i], true);&lt;br /&gt;
            this.appendChild(oNewNode);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        this.__checkForErrors__();&lt;br /&gt;
        &lt;br /&gt;
        this.__changeReadyState__(4);&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    oMozDocument.prototype.__load__ = oMozDocument.prototype.load;&lt;br /&gt;
    oMozDocument.prototype.load = function (sURL) {&lt;br /&gt;
        this.__initError__();&lt;br /&gt;
        this.__changeReadyState__(1);&lt;br /&gt;
        this.__load__(sURL);&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    Node.prototype.__defineGetter__(&amp;quot;xml&amp;quot;, function () {&lt;br /&gt;
        var oSerializer = new XMLSerializer();&lt;br /&gt;
        return oSerializer.serializeToString(this, &amp;quot;text/xml&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
    Node.prototype.__defineGetter__(&amp;quot;text&amp;quot;, function () {&lt;br /&gt;
        var sText = &amp;quot;&amp;quot;;&lt;br /&gt;
        for (var i = 0; i &amp;lt; this.childNodes.length; i++) {&lt;br /&gt;
            if (this.childNodes[i].hasChildNodes()) {&lt;br /&gt;
                sText += this.childNodes[i].text;&lt;br /&gt;
            } else {&lt;br /&gt;
                sText += this.childNodes[i].nodeValue;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return sText;&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Static class for handling XSLT transformations.&lt;br /&gt;
 * @class&lt;br /&gt;
 */&lt;br /&gt;
function zXslt() {&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Transforms an XML DOM to text using an XSLT DOM.&lt;br /&gt;
 * @param oXml The XML DOM to transform.&lt;br /&gt;
 * @param oXslt The XSLT DOM to use for the transformation.&lt;br /&gt;
 * @return The transformed version of the string.&lt;br /&gt;
 */&lt;br /&gt;
zXslt.transformToText = function (oXml /*:XMLDocument*/, oXslt /*:XMLDocument*/)/*:String*/ {&lt;br /&gt;
    if (typeof XSLTProcessor != &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
        var oProcessor = new XSLTProcessor();&lt;br /&gt;
        oProcessor.importStylesheet(oXslt);&lt;br /&gt;
    &lt;br /&gt;
        var oResultDom = oProcessor.transformToDocument(oXml);&lt;br /&gt;
        var sResult = oResultDom.xml;&lt;br /&gt;
    &lt;br /&gt;
        if (sResult.indexOf(&amp;quot;&amp;lt;transformiix:result&amp;quot;) &amp;gt; -1) {&lt;br /&gt;
            sResult = sResult.substring(sResult.indexOf(&amp;quot;&amp;gt;&amp;quot;) + 1, &lt;br /&gt;
                                        sResult.lastIndexOf(&amp;quot;&amp;lt;&amp;quot;));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        return sResult;     &lt;br /&gt;
    } else if (zXml.useActiveX) {&lt;br /&gt;
        return oXml.transformNode(oXslt);&lt;br /&gt;
    } else {&lt;br /&gt;
        throw new Error(&amp;quot;No XSLT engine found.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
 * Static class for handling XPath evaluation.&lt;br /&gt;
 * @class&lt;br /&gt;
 */&lt;br /&gt;
function zXPath() {&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Selects the first node matching a given XPath expression.&lt;br /&gt;
 * @param oRefNode The node from which to evaluate the expression.&lt;br /&gt;
 * @param sXPath The XPath expression.&lt;br /&gt;
 * @param oXmlNs An object containing the namespaces used in the expression. Optional.&lt;br /&gt;
 * @return An XML node matching the expression or null if no matches found.&lt;br /&gt;
 */&lt;br /&gt;
zXPath.selectNodes = function (oRefNode /*:Node*/, sXPath /*:String*/, oXmlNs /*:Object*/) {&lt;br /&gt;
    if (typeof XPathEvaluator != &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
    &lt;br /&gt;
        oXmlNs = oXmlNs || {};&lt;br /&gt;
        &lt;br /&gt;
        var nsResolver = function (sPrefix) {&lt;br /&gt;
                     return oXmlNs[sPrefix];&lt;br /&gt;
        };&lt;br /&gt;
          &lt;br /&gt;
        var oEvaluator = new XPathEvaluator();&lt;br /&gt;
        var oResult = oEvaluator.evaluate(sXPath, oRefNode, nsResolver, &lt;br /&gt;
                                          XPathResult.ORDERED_NODE_ITERATOR_TYPE, &lt;br /&gt;
                                          null);&lt;br /&gt;
        var aNodes = new Array;&lt;br /&gt;
        &lt;br /&gt;
        if (oResult != null) {&lt;br /&gt;
            var oElement = oResult.iterateNext();&lt;br /&gt;
            while(oElement) {&lt;br /&gt;
                aNodes.push(oElement);&lt;br /&gt;
                oElement = oResult.iterateNext();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return aNodes;&lt;br /&gt;
        &lt;br /&gt;
    } else if (zXml.useActiveX) {&lt;br /&gt;
              if (oXmlNs) {&lt;br /&gt;
            var sXmlNs = &amp;quot;&amp;quot;;&lt;br /&gt;
            for (var sProp in oXmlNs) {&lt;br /&gt;
                sXmlNs += &amp;quot;xmlns:&amp;quot; + sProp + &amp;quot;=\&amp;quot;&amp;quot; + oXmlNs[sProp] + &amp;quot;\&amp;quot; &amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
                     oRefNode.ownerDocument.setProperty(&amp;quot;SelectionNamespaces&amp;quot;, sXmlNs);&lt;br /&gt;
              }            &lt;br /&gt;
        return oRefNode.selectNodes(sXPath);&lt;br /&gt;
    } else {&lt;br /&gt;
        throw new Error(&amp;quot;No XPath engine found.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
 * Selects the first node matching a given XPath expression.&lt;br /&gt;
 * @param oRefNode The node from which to evaluate the expression.&lt;br /&gt;
 * @param sXPath The XPath expression.&lt;br /&gt;
 * @param oXmlNs An object containing the namespaces used in the expression.&lt;br /&gt;
 * @return An XML node matching the expression or null if no matches found.&lt;br /&gt;
 */&lt;br /&gt;
zXPath.selectSingleNode = function (oRefNode /*:Node*/, sXPath /*:String*/, oXmlNs /*:Object*/) {&lt;br /&gt;
    if (typeof XPathEvaluator != &amp;quot;undefined&amp;quot;) {            &lt;br /&gt;
     &lt;br /&gt;
        oXmlNs = oXmlNs || {};&lt;br /&gt;
        &lt;br /&gt;
        var nsResolver = function (sPrefix) {&lt;br /&gt;
                     return oXmlNs[sPrefix];&lt;br /&gt;
        };&lt;br /&gt;
    &lt;br /&gt;
        var oEvaluator = new XPathEvaluator();&lt;br /&gt;
        var oResult = oEvaluator.evaluate(sXPath, oRefNode, nsResolver,&lt;br /&gt;
                                          XPathResult.FIRST_ORDERED_NODE_TYPE, null);&lt;br /&gt;
    &lt;br /&gt;
        if (oResult != null) {&lt;br /&gt;
            return oResult.singleNodeValue;&lt;br /&gt;
        } else {&lt;br /&gt;
            return null;&lt;br /&gt;
        }              &lt;br /&gt;
    &lt;br /&gt;
    } else if (zXml.useActiveX) {&lt;br /&gt;
              if (oXmlNs) {&lt;br /&gt;
            var sXmlNs = &amp;quot;&amp;quot;;&lt;br /&gt;
            for (var sProp in oXmlNs) {&lt;br /&gt;
                sXmlNs += &amp;quot;xmlns:&amp;quot; + sProp + &amp;quot;=\&amp;quot;&amp;quot; + oXmlNs[sProp] + &amp;quot;\&amp;quot; &amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
                     oRefNode.ownerDocument.setProperty(&amp;quot;SelectionNamespaces&amp;quot;, sXmlNs);&lt;br /&gt;
              }    &lt;br /&gt;
        return oRefNode.selectSingleNode(sXPath);&lt;br /&gt;
    } else {&lt;br /&gt;
        throw new Error(&amp;quot;No XPath engine found.&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
 * General purpose XML serializer.&lt;br /&gt;
 * @class&lt;br /&gt;
 */&lt;br /&gt;
function zXMLSerializer() {&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * Serializes the given XML node into an XML string.&lt;br /&gt;
 * @param oNode The XML node to serialize.&lt;br /&gt;
 * @return An XML string.&lt;br /&gt;
 */&lt;br /&gt;
zXMLSerializer.prototype.serializeToString = function (oNode /*:Node*/)/*:String*/ {&lt;br /&gt;
    var sXml = &amp;quot;&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    switch (oNode.nodeType) {&lt;br /&gt;
        case 1: //element&lt;br /&gt;
            sXml = &amp;quot;&amp;lt;&amp;quot; + oNode.tagName;&lt;br /&gt;
            &lt;br /&gt;
            for (var i=0; i &amp;lt; oNode.attributes.length; i++) {&lt;br /&gt;
                sXml += &amp;quot; &amp;quot; + oNode.attributes[i].name + &amp;quot;=\&amp;quot;&amp;quot; + oNode.attributes[i].value + &amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            sXml += &amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            for (var i=0; i &amp;lt; oNode.childNodes.length; i++){&lt;br /&gt;
                sXml += this.serializeToString(oNode.childNodes[i]);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            sXml += &amp;quot;&amp;lt;/&amp;quot; + oNode.tagName + &amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
            break;&lt;br /&gt;
            &lt;br /&gt;
        case 3: //text node&lt;br /&gt;
            sXml = oNode.nodeValue;&lt;br /&gt;
            break;&lt;br /&gt;
        case 4: //cdata&lt;br /&gt;
            sXml = &amp;quot;&amp;lt;![CDATA[&amp;quot; + oNode.nodeValue + &amp;quot;&amp;quot;;&lt;br /&gt;
            break;&lt;br /&gt;
        case 7: //processing instruction&lt;br /&gt;
            sXml = &amp;quot;&amp;lt;?&amp;quot; + oNode.nodevalue + &amp;quot;?&amp;gt;&amp;quot;;&lt;br /&gt;
            break;&lt;br /&gt;
        case 8: //comment&lt;br /&gt;
            sXml = &amp;quot;&amp;lt;!--&amp;quot; + oNode.nodevalue + &amp;quot;--&amp;gt;&amp;quot;;&lt;br /&gt;
            break;&lt;br /&gt;
        case 9: //document&lt;br /&gt;
            for (var i=0; i &amp;lt; oNode.childNodes.length; i++){&lt;br /&gt;
                sXml += this.serializeToString(oNode.childNodes[i]);&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
            &lt;br /&gt;
    }  &lt;br /&gt;
    &lt;br /&gt;
    return sXml;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    //create a DOM document&lt;br /&gt;
          var oXml = zXmlDom.createDocument();&lt;br /&gt;
          &lt;br /&gt;
          //fill it with some XML&lt;br /&gt;
          oXml.loadXML(&amp;quot;&amp;lt;root&amp;gt;&amp;lt;child index=\&amp;quot;1\&amp;quot;/&amp;gt;&amp;lt;child index=\&amp;quot;2\&amp;quot;/&amp;gt;&amp;lt;child index=\&amp;quot;1\&amp;quot;/&amp;gt;&amp;lt;child index=\&amp;quot;3\&amp;quot;/&amp;gt;&amp;lt;/root&amp;gt;&amp;quot;);&lt;br /&gt;
          &lt;br /&gt;
          //look around&lt;br /&gt;
          alert(&amp;quot;Root is: &amp;quot; + oXml.documentElement.tagName);&lt;br /&gt;
       alert(&amp;quot;First child is: &amp;quot; + oXml.documentElement.firstChild.tagName);&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>