namibia
df0489e1eeeeab5a9bd44e1d84fce49924fe1bac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
/* Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ /** * @fileOverview Defines the {@link CKEDITOR.xml} class, which represents a * loaded XML document. */ (function() { CKEDITOR.plugins.add( 'xml', {}); /** * Represents a loaded XML document. * @constructor * @param {object|string} xmlObjectOrData A native XML (DOM document) object or * a string containing the XML definition to be loaded. * @example * var xml = <b>new CKEDITOR.xml( '<books><book title="My Book" /></books>' )</b>; */ CKEDITOR.xml = function( xmlObjectOrData ) { var baseXml = null; if ( typeof xmlObjectOrData == 'object' ) baseXml = xmlObjectOrData; else { var data = ( xmlObjectOrData || '' ).replace( / /g, '\xA0' ); if ( window.DOMParser ) baseXml = (new DOMParser()).parseFromString( data, 'text/xml' ); else if ( window.ActiveXObject ) { try { baseXml = new ActiveXObject( 'MSXML2.DOMDocument' ); } catch(e) { try { baseXml = new ActiveXObject( 'Microsoft.XmlDom' ); } catch(e) {} } if ( baseXml ) { baseXml.async = false; baseXml.resolveExternals = false; baseXml.validateOnParse = false; baseXml.loadXML( data ); } } } /** * The native XML (DOM document) used by the class instance. * @type object * @example */ this.baseXml = baseXml; }; CKEDITOR.xml.prototype = { /** * Get a single node from the XML document, based on a XPath query. * @param {String} xpath The XPath query to execute. * @param {Object} [contextNode] The XML DOM node to be used as the context * for the XPath query. The document root is used by default. * @returns {Object} A XML node element or null if the query has no results. * @example * // Create the XML instance. * var xml = new CKEDITOR.xml( '<list><item id="test1" /><item id="test2" /></list>' ); * // Get the first <item> node. * var itemNode = <b>xml.selectSingleNode( 'list/item' )</b>; * // Alert "item". * alert( itemNode.nodeName ); */ selectSingleNode : function( xpath, contextNode ) { var baseXml = this.baseXml; if ( contextNode || ( contextNode = baseXml ) ) { if ( CKEDITOR.env.ie || contextNode.selectSingleNode ) // IE return contextNode.selectSingleNode( xpath ); else if ( baseXml.evaluate ) // Others { var result = baseXml.evaluate( xpath, contextNode, null, 9, null); return ( result && result.singleNodeValue ) || null; } } return null; }, /** * Gets a list node from the XML document, based on a XPath query. * @param {String} xpath The XPath query to execute. * @param {Object} [contextNode] The XML DOM node to be used as the context * for the XPath query. The document root is used by default. * @returns {ArrayLike} An array containing all matched nodes. The array will * be empty if the query has no results. * @example * // Create the XML instance. * var xml = new CKEDITOR.xml( '<list><item id="test1" /><item id="test2" /></list>' ); * // Get the first <item> node. * var itemNodes = xml.selectSingleNode( 'list/item' ); * // Alert "item" twice, one for each <item>. * for ( var i = 0 ; i < itemNodes.length ; i++ ) * alert( itemNodes[i].nodeName ); */ selectNodes : function( xpath, contextNode ) { var baseXml = this.baseXml, nodes = []; if ( contextNode || ( contextNode = baseXml ) ) { if ( CKEDITOR.env.ie || contextNode.selectNodes ) // IE return contextNode.selectNodes( xpath ); else if ( baseXml.evaluate ) // Others { var result = baseXml.evaluate( xpath, contextNode, null, 5, null); if ( result ) { var node; while ( ( node = result.iterateNext() ) ) nodes.push( node ); } } } return nodes; }, /** * Gets the string representation of hte inner contents of a XML node, * based on a XPath query. * @param {String} xpath The XPath query to execute. * @param {Object} [contextNode] The XML DOM node to be used as the context * for the XPath query. The document root is used by default. * @returns {String} The textual representation of the inner contents of * the node or null if the query has no results. * @example * // Create the XML instance. * var xml = new CKEDITOR.xml( '<list><item id="test1" /><item id="test2" /></list>' ); * // Alert "<item id="test1" /><item id="test2" />". * alert( xml.getInnerXml( 'list' ) ); */ getInnerXml : function( xpath, contextNode ) { var node = this.selectSingleNode( xpath, contextNode ), xml = []; if ( node ) { node = node.firstChild; while ( node ) { if ( node.xml ) // IE xml.push( node.xml ); else if ( window.XMLSerializer ) // Others xml.push( ( new XMLSerializer() ).serializeToString( node ) ); node = node.nextSibling; } } return xml.length ? xml.join( '' ) : null; } }; })(); |
Commits for namibiapublic/scripts/ckeditor/_source/plugins/xml/plugin.js
Revision | Author | Commited | Message |
---|---|---|---|
df0489 ... | Mark | Fri 14 Oct, 2016 10:01:00 +0000 | initial commit |