diff options
Diffstat (limited to 'includes/js/dojox/wire/XmlWire.js')
-rw-r--r-- | includes/js/dojox/wire/XmlWire.js | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/includes/js/dojox/wire/XmlWire.js b/includes/js/dojox/wire/XmlWire.js deleted file mode 100644 index dc5666f..0000000 --- a/includes/js/dojox/wire/XmlWire.js +++ /dev/null @@ -1,244 +0,0 @@ -if(!dojo._hasResource["dojox.wire.XmlWire"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.wire.XmlWire"] = true; -dojo.provide("dojox.wire.XmlWire"); - -dojo.require("dojox.data.dom"); -dojo.require("dojox.wire.Wire"); - -dojo.declare("dojox.wire.XmlWire", dojox.wire.Wire, { - // summary: - // A Wire for XML nodes or values (element, attribute and text) - // description: - // This class accesses XML nodes or value with a simplified XPath - // specified to 'path' property. - // The root object for this class must be an DOM document or element - // node. - // "@name" accesses to an attribute value of an element and "text()" - // accesses to a text value of an element. - // The hierarchy of the elements from the root node can be specified - // with slash-separated list, such as "a/b/@c", which specifies - // the value of an attribute named "c" of an element named "b" as - // a child of another element named "a" of a child of the root node. - - _wireClass: "dojox.wire.XmlWire", - - constructor: function(/*Object*/args){ - // summary: - // Initialize properties - // description: - // 'args' is just mixed in with no further processing. - // args: - // Arguments to initialize properties - // path: - // A simplified XPath to an attribute, a text or elements - }, - _getValue: function(/*Node*/object){ - // summary: - // Return an attribute value, a text value or an array of elements - // description: - // This method first uses a root node passed in 'object' argument - // and 'path' property to identify an attribute, a text or - // elements. - // If 'path' starts with a slash (absolute), the first path - // segment is ignored assuming it point to the root node. - // (That is, "/a/b/@c" and "b/@c" against a root node access - // the same attribute value, assuming the root node is an element - // with a tag name, "a".) - // object: - // A root node - // returns: - // A value found, otherwise 'undefined' - if(!object || !this.path){ - return object; //Node - } - - var node = object; - var path = this.path; - if(path.charAt(0) == '/'){ // absolute - // skip the first expression (supposed to select the top node) - var i = path.indexOf('/', 1); - path = path.substring(i + 1); - } - var list = path.split('/'); - var last = list.length - 1; - for(var i = 0; i < last; i++){ - node = this._getChildNode(node, list[i]); - if(!node){ - return undefined; //undefined - } - } - var value = this._getNodeValue(node, list[last]); - return value; //String||Array - }, - - _setValue: function(/*Node*/object, /*String*/value){ - // summary: - // Set an attribute value or a child text value to an element - // description: - // This method first uses a root node passed in 'object' argument - // and 'path' property to identify an attribute, a text or - // elements. - // If an intermediate element does not exist, it creates - // an element of the tag name in the 'path' segment as a child - // node of the current node. - // Finally, 'value' argument is set to an attribute or a text - // (a child node) of the leaf element. - // object: - // A root node - // value: - // A value to set - if(!this.path){ - return object; //Node - } - - var node = object; - var doc = this._getDocument(node); - var path = this.path; - if(path.charAt(0) == '/'){ // absolute - var i = path.indexOf('/', 1); - if(!node){ - var name = path.substring(1, i); - node = doc.createElement(name); - object = node; // to be returned as a new object - } - // skip the first expression (supposed to select the top node) - path = path.substring(i + 1); - }else{ - if(!node){ - return undefined; //undefined - } - } - - var list = path.split('/'); - var last = list.length - 1; - for(var i = 0; i < last; i++){ - var child = this._getChildNode(node, list[i]); - if(!child){ - child = doc.createElement(list[i]); - node.appendChild(child); - } - node = child; - } - this._setNodeValue(node, list[last], value); - return object; //Node - }, - - _getNodeValue: function(/*Node*/node, /*String*/exp){ - // summary: - // Return an attribute value, a text value or an array of elements - // description: - // If 'exp' starts with '@', an attribute value of the specified - // attribute is returned. - // If 'exp' is "text()", a child text value is returned. - // Otherwise, an array of child elements, the tag name of which - // match 'exp', is returned. - // node: - // A node - // exp: - // An expression for attribute, text or elements - // returns: - // A value found, otherwise 'undefined' - var value = undefined; - if(exp.charAt(0) == '@'){ - var attribute = exp.substring(1); - value = node.getAttribute(attribute); - }else if(exp == "text()"){ - var text = node.firstChild; - if(text){ - value = text.nodeValue; - } - }else{ // assume elements - value = []; - for(var i = 0; i < node.childNodes.length; i++){ - var child = node.childNodes[i]; - if(child.nodeType === 1 /* ELEMENT_NODE */ && child.nodeName == exp){ - value.push(child); - } - } - } - return value; //String||Array - }, - - _setNodeValue: function(/*Node*/node, /*String*/exp, /*String*/value){ - // summary: - // Set an attribute value or a child text value to an element - // description: - // If 'exp' starts with '@', 'value' is set to the specified - // attribute. - // If 'exp' is "text()", 'value' is set to a child text. - // node: - // A node - // exp: - // An expression for attribute or text - // value: - // A value to set - if(exp.charAt(0) == '@'){ - var attribute = exp.substring(1); - if(value){ - node.setAttribute(attribute, value); - }else{ - node.removeAttribute(attribute); - } - }else if(exp == "text()"){ - while(node.firstChild){ - node.removeChild(node.firstChild); - } - if(value){ - var text = this._getDocument(node).createTextNode(value); - node.appendChild(text); - } - } - // else not supported - }, - - _getChildNode: function(/*Node*/node, /*String*/name){ - // summary: - // Return a child node - // description: - // A child element of the tag name specified with 'name' is - // returned. - // If 'name' ends with an array index, it is used to pick up - // the corresponding element from multiple child elements. - // node: - // A parent node - // name: - // A tag name - // returns: - // A child node - var index = 1; - var i1 = name.indexOf('['); - if(i1 >= 0){ - var i2 = name.indexOf(']'); - index = name.substring(i1 + 1, i2); - name = name.substring(0, i1); - } - var count = 1; - for(var i = 0; i < node.childNodes.length; i++){ - var child = node.childNodes[i]; - if(child.nodeType === 1 /* ELEMENT_NODE */ && child.nodeName == name){ - if(count == index){ - return child; //Node - } - count++; - } - } - return null; //null - }, - - _getDocument: function(/*Node*/node){ - // summary: - // Return a DOM document - // description: - // If 'node' is specified, a DOM document of the node is returned. - // Otherwise, a DOM document is created. - // returns: - // A DOM document - if(node){ - return (node.nodeType == 9 /* DOCUMENT_NODE */ ? node : node.ownerDocument); //Document - }else{ - return dojox.data.dom.createDocument(); //Document - } - } -}); - -} |