You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2014/03/27 16:08:18 UTC
[04/51] [partial] CB-6346 - Add node_modules to source control
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json
new file mode 100644
index 0000000..d775309
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "xmldom",
+ "version": "0.1.16",
+ "description": "A W3C Standard XML DOM(Level2 CORE) implementation and parser(DOMParser/XMLSerializer).",
+ "keywords": [
+ "w3c",
+ "dom",
+ "xml",
+ "parser",
+ "javascript",
+ "DOMParser",
+ "XMLSerializer"
+ ],
+ "author": {
+ "name": "jindw",
+ "email": "jindw@xidea.org",
+ "url": "http://www.xidea.org"
+ },
+ "homepage": "https://github.com/jindw/xmldom",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/jindw/xmldom.git"
+ },
+ "main": "./dom-parser.js",
+ "scripts": {
+ "test": "proof platform win32 && proof test */*/*.t.js || t/test"
+ },
+ "engines": {
+ "node": ">=0.1"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "proof": "0.0.28"
+ },
+ "maintainers": [
+ {
+ "name": "jindw",
+ "email": "jindw@xidea.org",
+ "url": "http://www.xidea.org"
+ }
+ ],
+ "contributors": [
+ {
+ "name": "Yaron Naveh",
+ "email": "yaronn01@gmail.com",
+ "url": "http://webservices20.blogspot.com/"
+ },
+ {
+ "name": "Harutyun Amirjanyan",
+ "email": "amirjanyan@gmail.com",
+ "url": "https://github.com/nightwing"
+ },
+ {
+ "name": "Alan Gutierrez",
+ "email": "alan@prettyrobots.com",
+ "url": "http://www.prettyrobots.com/"
+ }
+ ],
+ "bugs": {
+ "url": "http://github.com/jindw/xmldom/issues",
+ "email": "jindw@xidea.org"
+ },
+ "licenses": [
+ {
+ "type": "LGPL",
+ "url": "http://www.gnu.org/licenses/lgpl.html"
+ }
+ ],
+ "readme": "# XMLDOM [![Build Status](https://secure.travis-ci.org/bigeasy/xmldom.png?branch=master)](http://travis-ci.org/bigeasy/xmldom) [![Coverage Status](https://coveralls.io/repos/bigeasy/xmldom/badge.png?branch=master)](https://coveralls.io/r/bigeasy/xmldom) [![NPM version](https://badge.fury.io/js/xmldom.png)](http://badge.fury.io/js/xmldom)\n\nA JavaScript implementation of W3C DOM for Node.js, Rhino and the browser. Fully\ncompatible with `W3C DOM level2`; and some compatible with `level3`. Supports\n`DOMParser` and `XMLSerializer` interface such as in browser.\n\nInstall:\n-------\n>npm install xmldom\n\nExample:\n====\n```javascript\nvar DOMParser = require('xmldom').DOMParser;\nvar doc = new DOMParser().parseFromString(\n '<xml xmlns=\"a\" xmlns:c=\"./lite\">\\n'+\n '\\t<child>test</child>\\n'+\n '\\t<child></child>\\n'+\n '\\t<child/>\\n'+\n '</xml>'\n ,'text/xml');\ndoc.documentElement.setAttribute('x','y');\ndoc.documentElement.setAttri
buteNS('./lite','c:x','y2');\nvar nsAttr = doc.documentElement.getAttributeNS('./lite','x')\nconsole.info(nsAttr)\nconsole.info(doc)\n```\nAPI Reference\n=====\n\n * [DOMParser](https://developer.mozilla.org/en/DOMParser):\n\n\t```javascript\n\tparseFromString(xmlsource,mimeType)\n\t```\n\t* **options extension** _by xmldom_(not BOM standard!!)\n\n\t```javascript\n\t//added the options argument\n\tnew DOMParser(options)\n\t\n\t//errorHandler is supported\n\tnew DOMParser({\n\t\t/**\n\t\t * youcan override the errorHandler for xml parser\n\t\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t\t */\n\t\terrorHandler:{warning:callback,error:callback,fatalError:callback}\n\t})\n\t\t\n\t```\n\n * [XMLSerializer](https://developer.mozilla.org/en/XMLSerializer)\n \n\t```javascript\n\tserializeToString(node)\n\t```\nDOM level2 method and attribute:\n------\n\n * [Node](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247)\n\t\n\t\tattribut
e:\n\t\t\tnodeValue|prefix\n\t\treadonly attribute:\n\t\t\tnodeName|nodeType|parentNode|childNodes|firstChild|lastChild|previousSibling|nextSibling|attributes|ownerDocument|namespaceURI|localName\n\t\tmethod:\t\n\t\t\tinsertBefore(newChild, refChild)\n\t\t\treplaceChild(newChild, oldChild)\n\t\t\tremoveChild(oldChild)\n\t\t\tappendChild(newChild)\n\t\t\thasChildNodes()\n\t\t\tcloneNode(deep)\n\t\t\tnormalize()\n\t\t\tisSupported(feature, version)\n\t\t\thasAttributes()\n\n * [DOMImplementation](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-102161490)\n\t\t\n\t\tmethod:\n\t\t\thasFeature(feature, version)\n\t\t\tcreateDocumentType(qualifiedName, publicId, systemId)\n\t\t\tcreateDocument(namespaceURI, qualifiedName, doctype)\n\n * [Document](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#i-Document) : Node\n\t\t\n\t\treadonly attribute:\n\t\t\tdoctype|implementation|documentElement\n\t\tmethod:\n\t\t\tcreateElement(tagName)\n\t\t\tcreateDocume
ntFragment()\n\t\t\tcreateTextNode(data)\n\t\t\tcreateComment(data)\n\t\t\tcreateCDATASection(data)\n\t\t\tcreateProcessingInstruction(target, data)\n\t\t\tcreateAttribute(name)\n\t\t\tcreateEntityReference(name)\n\t\t\tgetElementsByTagName(tagname)\n\t\t\timportNode(importedNode, deep)\n\t\t\tcreateElementNS(namespaceURI, qualifiedName)\n\t\t\tcreateAttributeNS(namespaceURI, qualifiedName)\n\t\t\tgetElementsByTagNameNS(namespaceURI, localName)\n\t\t\tgetElementById(elementId)\n\n * [DocumentFragment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-B63ED1A3) : Node\n * [Element](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-745549614) : Node\n\t\t\n\t\treadonly attribute:\n\t\t\ttagName\n\t\tmethod:\n\t\t\tgetAttribute(name)\n\t\t\tsetAttribute(name, value)\n\t\t\tremoveAttribute(name)\n\t\t\tgetAttributeNode(name)\n\t\t\tsetAttributeNode(newAttr)\n\t\t\tremoveAttributeNode(oldAttr)\n\t\t\tgetElementsByTagName(name)\n\t\t\tgetAttributeNS(n
amespaceURI, localName)\n\t\t\tsetAttributeNS(namespaceURI, qualifiedName, value)\n\t\t\tremoveAttributeNS(namespaceURI, localName)\n\t\t\tgetAttributeNodeNS(namespaceURI, localName)\n\t\t\tsetAttributeNodeNS(newAttr)\n\t\t\tgetElementsByTagNameNS(namespaceURI, localName)\n\t\t\thasAttribute(name)\n\t\t\thasAttributeNS(namespaceURI, localName)\n\n * [Attr](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-637646024) : Node\n\t\n\t\tattribute:\n\t\t\tvalue\n\t\treadonly attribute:\n\t\t\tname|specified|ownerElement\n\n * [NodeList](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177)\n\t\t\n\t\treadonly attribute:\n\t\t\tlength\n\t\tmethod:\n\t\t\titem(index)\n\t\n * [NamedNodeMap](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1780488922)\n\n\t\treadonly attribute:\n\t\t\tlength\n\t\tmethod:\n\t\t\tgetNamedItem(name)\n\t\t\tsetNamedItem(arg)\n\t\t\tremoveNamedItem(name)\n\t\t\titem(index)\n\t\t\tgetNamedItemNS(names
paceURI, localName)\n\t\t\tsetNamedItemNS(arg)\n\t\t\tremoveNamedItemNS(namespaceURI, localName)\n\t\t\n * [CharacterData](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-FF21A306) : Node\n\t\n\t\tmethod:\n\t\t\tsubstringData(offset, count)\n\t\t\tappendData(arg)\n\t\t\tinsertData(offset, arg)\n\t\t\tdeleteData(offset, count)\n\t\t\treplaceData(offset, count, arg)\n\t\t\n * [Text](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1312295772) : CharacterData\n\t\n\t\tmethod:\n\t\t\tsplitText(offset)\n\t\t\t\n * [CDATASection](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-667469212)\n * [Comment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1728279322) : CharacterData\n\t\n * [DocumentType](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-412266927)\n\t\n\t\treadonly attribute:\n\t\t\tname|entities|notations|publicId|systemId|internalSubset\n\t\t\t\n * Notation : Node\n\t\n\t\tre
adonly attribute:\n\t\t\tpublicId|systemId\n\t\t\t\n * Entity : Node\n\t\n\t\treadonly attribute:\n\t\t\tpublicId|systemId|notationName\n\t\t\t\n * EntityReference : Node \n * ProcessingInstruction : Node \n\t\n\t\tattribute:\n\t\t\tdata\n\t\treadonly attribute:\n\t\t\ttarget\n\t\t\nDOM level 3 support:\n-----\n\n * [Node](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent)\n\t\t\n\t\tattribute:\n\t\t\ttextContent\n\t\tmethod:\n\t\t\tisDefaultNamespace(namespaceURI){\n\t\t\tlookupNamespaceURI(prefix)\n\nDOM extension by xmldom\n---\n * [Node] Source position extension; \n\t\t\n\t\tattribute:\n\t\t\t//Numbered starting from '1'\n\t\t\tlineNumber\n\t\t\t//Numbered starting from '1'\n\t\t\tcolumnNumber\n",
+ "readmeFilename": "readme.md",
+ "_id": "xmldom@0.1.16",
+ "_from": "xmldom@0.1.x"
+}
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md
new file mode 100644
index 0000000..5ce0e81
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md
@@ -0,0 +1,213 @@
+# XMLDOM [![Build Status](https://secure.travis-ci.org/bigeasy/xmldom.png?branch=master)](http://travis-ci.org/bigeasy/xmldom) [![Coverage Status](https://coveralls.io/repos/bigeasy/xmldom/badge.png?branch=master)](https://coveralls.io/r/bigeasy/xmldom) [![NPM version](https://badge.fury.io/js/xmldom.png)](http://badge.fury.io/js/xmldom)
+
+A JavaScript implementation of W3C DOM for Node.js, Rhino and the browser. Fully
+compatible with `W3C DOM level2`; and some compatible with `level3`. Supports
+`DOMParser` and `XMLSerializer` interface such as in browser.
+
+Install:
+-------
+>npm install xmldom
+
+Example:
+====
+```javascript
+var DOMParser = require('xmldom').DOMParser;
+var doc = new DOMParser().parseFromString(
+ '<xml xmlns="a" xmlns:c="./lite">\n'+
+ '\t<child>test</child>\n'+
+ '\t<child></child>\n'+
+ '\t<child/>\n'+
+ '</xml>'
+ ,'text/xml');
+doc.documentElement.setAttribute('x','y');
+doc.documentElement.setAttributeNS('./lite','c:x','y2');
+var nsAttr = doc.documentElement.getAttributeNS('./lite','x')
+console.info(nsAttr)
+console.info(doc)
+```
+API Reference
+=====
+
+ * [DOMParser](https://developer.mozilla.org/en/DOMParser):
+
+ ```javascript
+ parseFromString(xmlsource,mimeType)
+ ```
+ * **options extension** _by xmldom_(not BOM standard!!)
+
+ ```javascript
+ //added the options argument
+ new DOMParser(options)
+
+ //errorHandler is supported
+ new DOMParser({
+ /**
+ * youcan override the errorHandler for xml parser
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
+ */
+ errorHandler:{warning:callback,error:callback,fatalError:callback}
+ })
+
+ ```
+
+ * [XMLSerializer](https://developer.mozilla.org/en/XMLSerializer)
+
+ ```javascript
+ serializeToString(node)
+ ```
+DOM level2 method and attribute:
+------
+
+ * [Node](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247)
+
+ attribute:
+ nodeValue|prefix
+ readonly attribute:
+ nodeName|nodeType|parentNode|childNodes|firstChild|lastChild|previousSibling|nextSibling|attributes|ownerDocument|namespaceURI|localName
+ method:
+ insertBefore(newChild, refChild)
+ replaceChild(newChild, oldChild)
+ removeChild(oldChild)
+ appendChild(newChild)
+ hasChildNodes()
+ cloneNode(deep)
+ normalize()
+ isSupported(feature, version)
+ hasAttributes()
+
+ * [DOMImplementation](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-102161490)
+
+ method:
+ hasFeature(feature, version)
+ createDocumentType(qualifiedName, publicId, systemId)
+ createDocument(namespaceURI, qualifiedName, doctype)
+
+ * [Document](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#i-Document) : Node
+
+ readonly attribute:
+ doctype|implementation|documentElement
+ method:
+ createElement(tagName)
+ createDocumentFragment()
+ createTextNode(data)
+ createComment(data)
+ createCDATASection(data)
+ createProcessingInstruction(target, data)
+ createAttribute(name)
+ createEntityReference(name)
+ getElementsByTagName(tagname)
+ importNode(importedNode, deep)
+ createElementNS(namespaceURI, qualifiedName)
+ createAttributeNS(namespaceURI, qualifiedName)
+ getElementsByTagNameNS(namespaceURI, localName)
+ getElementById(elementId)
+
+ * [DocumentFragment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-B63ED1A3) : Node
+ * [Element](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-745549614) : Node
+
+ readonly attribute:
+ tagName
+ method:
+ getAttribute(name)
+ setAttribute(name, value)
+ removeAttribute(name)
+ getAttributeNode(name)
+ setAttributeNode(newAttr)
+ removeAttributeNode(oldAttr)
+ getElementsByTagName(name)
+ getAttributeNS(namespaceURI, localName)
+ setAttributeNS(namespaceURI, qualifiedName, value)
+ removeAttributeNS(namespaceURI, localName)
+ getAttributeNodeNS(namespaceURI, localName)
+ setAttributeNodeNS(newAttr)
+ getElementsByTagNameNS(namespaceURI, localName)
+ hasAttribute(name)
+ hasAttributeNS(namespaceURI, localName)
+
+ * [Attr](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-637646024) : Node
+
+ attribute:
+ value
+ readonly attribute:
+ name|specified|ownerElement
+
+ * [NodeList](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177)
+
+ readonly attribute:
+ length
+ method:
+ item(index)
+
+ * [NamedNodeMap](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1780488922)
+
+ readonly attribute:
+ length
+ method:
+ getNamedItem(name)
+ setNamedItem(arg)
+ removeNamedItem(name)
+ item(index)
+ getNamedItemNS(namespaceURI, localName)
+ setNamedItemNS(arg)
+ removeNamedItemNS(namespaceURI, localName)
+
+ * [CharacterData](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-FF21A306) : Node
+
+ method:
+ substringData(offset, count)
+ appendData(arg)
+ insertData(offset, arg)
+ deleteData(offset, count)
+ replaceData(offset, count, arg)
+
+ * [Text](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1312295772) : CharacterData
+
+ method:
+ splitText(offset)
+
+ * [CDATASection](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-667469212)
+ * [Comment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1728279322) : CharacterData
+
+ * [DocumentType](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-412266927)
+
+ readonly attribute:
+ name|entities|notations|publicId|systemId|internalSubset
+
+ * Notation : Node
+
+ readonly attribute:
+ publicId|systemId
+
+ * Entity : Node
+
+ readonly attribute:
+ publicId|systemId|notationName
+
+ * EntityReference : Node
+ * ProcessingInstruction : Node
+
+ attribute:
+ data
+ readonly attribute:
+ target
+
+DOM level 3 support:
+-----
+
+ * [Node](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent)
+
+ attribute:
+ textContent
+ method:
+ isDefaultNamespace(namespaceURI){
+ lookupNamespaceURI(prefix)
+
+DOM extension by xmldom
+---
+ * [Node] Source position extension;
+
+ attribute:
+ //Numbered starting from '1'
+ lineNumber
+ //Numbered starting from '1'
+ columnNumber
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js
new file mode 100644
index 0000000..be6e34e
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js
@@ -0,0 +1,564 @@
+//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
+//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
+//[5] Name ::= NameStartChar (NameChar)*
+var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF
+var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\ux203F-\u2040]");
+var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$');
+//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/
+//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')
+
+//S_TAG, S_ATTR, S_EQ, S_V
+//S_ATTR_S, S_E, S_S, S_C
+var S_TAG = 0;//tag name offerring
+var S_ATTR = 1;//attr name offerring
+var S_ATTR_S=2;//attr name end and space offer
+var S_EQ = 3;//=space?
+var S_V = 4;//attr value(no quot value only)
+var S_E = 5;//attr value end and no space(quot end)
+var S_S = 6;//(attr value end || tag end ) && (space offer)
+var S_C = 7;//closed el<el />
+
+function XMLReader(){
+}
+
+XMLReader.prototype = {
+ parse:function(source,defaultNSMap,entityMap){
+ var domBuilder = this.domBuilder;
+ domBuilder.startDocument();
+ _copy(defaultNSMap ,defaultNSMap = {})
+ parse(source,defaultNSMap,entityMap,
+ domBuilder,this.errorHandler);
+ domBuilder.endDocument();
+ }
+}
+function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
+ function fixedFromCharCode(code) {
+ // String.prototype.fromCharCode does not supports
+ // > 2 bytes unicode chars directly
+ if (code > 0xffff) {
+ code -= 0x10000;
+ var surrogate1 = 0xd800 + (code >> 10)
+ , surrogate2 = 0xdc00 + (code & 0x3ff);
+
+ return String.fromCharCode(surrogate1, surrogate2);
+ } else {
+ return String.fromCharCode(code);
+ }
+ }
+ function entityReplacer(a){
+ var k = a.slice(1,-1);
+ if(k in entityMap){
+ return entityMap[k];
+ }else if(k.charAt(0) === '#'){
+ return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))
+ }else{
+ errorHandler.error('entity not found:'+a);
+ return a;
+ }
+ }
+ function appendText(end){//has some bugs
+ var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer);
+ locator&&position(start);
+ domBuilder.characters(xt,0,end-start);
+ start = end
+ }
+ function position(start,m){
+ while(start>=endPos && (m = linePattern.exec(source))){
+ startPos = m.index;
+ endPos = startPos + m[0].length;
+ locator.lineNumber++;
+ //console.log('line++:',locator,startPos,endPos)
+ }
+ locator.columnNumber = start-startPos+1;
+ }
+ var startPos = 0;
+ var endPos = 0;
+ var linePattern = /.+(?:\r\n?|\n)|.*$/g
+ var locator = domBuilder.locator;
+
+ var parseStack = [{currentNSMap:defaultNSMapCopy}]
+ var closeMap = {};
+ var start = 0;
+ while(true){
+ var i = source.indexOf('<',start);
+ if(i>start){
+ appendText(i);
+ }
+ switch(source.charAt(i+1)){
+ case '/':
+ var end = source.indexOf('>',i+3);
+ var tagName = source.substring(i+2,end);
+ var config = parseStack.pop();
+ var localNSMap = config.localNSMap;
+
+ if(config.tagName != tagName){
+ errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName );
+ }
+ domBuilder.endElement(config.uri,config.localName,tagName);
+ if(localNSMap){
+ for(var prefix in localNSMap){
+ domBuilder.endPrefixMapping(prefix) ;
+ }
+ }
+ end++;
+ break;
+ // end elment
+ case '?':// <?...?>
+ locator&&position(i);
+ end = parseInstruction(source,i,domBuilder);
+ break;
+ case '!':// <!doctype,<![CDATA,<!--
+ locator&&position(i);
+ end = parseDCC(source,i,domBuilder);
+ break;
+ default:
+ if(i<0){
+ if(!source.substr(start).match(/^\s*$/)){
+ errorHandler.error('source code out of document root');
+ }
+ return;
+ }else{
+ try{
+ locator&&position(i);
+ var el = new ElementAttributes();
+ //elStartEnd
+ var end = parseElementStartPart(source,i,el,entityReplacer,errorHandler);
+ var len = el.length;
+ //position fixed
+ if(len && locator){
+ var backup = copyLocator(locator,{});
+ for(var i = 0;i<len;i++){
+ var a = el[i];
+ position(a.offset);
+ a.offset = copyLocator(locator,{});
+ }
+ copyLocator(backup,locator);
+ }
+ el.closed = el.closed||fixSelfClosed(source,end,el.tagName,closeMap);
+ appendElement(el,domBuilder,parseStack);
+
+
+ if(el.uri === 'http://www.w3.org/1999/xhtml' && !el.closed){
+ end = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)
+ }else{
+ end++;
+ }
+ }catch(e){
+ errorHandler.error('element parse error: '+e);
+ end = -1;
+ }
+ }
+
+ }
+ if(end<0){
+ //TODO: 这里有可能sax回退,有位置错误风险
+ appendText(i+1);
+ }else{
+ start = end;
+ }
+ }
+}
+function copyLocator(f,t){
+ t.lineNumber = f.lineNumber;
+ t.columnNumber = f.columnNumber;
+ return t;
+
+}
+
+/**
+ * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);
+ * @return end of the elementStartPart(end of elementEndPart for selfClosed el)
+ */
+function parseElementStartPart(source,start,el,entityReplacer,errorHandler){
+ var attrName;
+ var value;
+ var p = ++start;
+ var s = S_TAG;//status
+ while(true){
+ var c = source.charAt(p);
+ switch(c){
+ case '=':
+ if(s === S_ATTR){//attrName
+ attrName = source.slice(start,p);
+ s = S_EQ;
+ }else if(s === S_ATTR_S){
+ s = S_EQ;
+ }else{
+ //fatalError: equal must after attrName or space after attrName
+ throw new Error('attribute equal must after attrName');
+ }
+ break;
+ case '\'':
+ case '"':
+ if(s === S_EQ){//equal
+ start = p+1;
+ p = source.indexOf(c,start)
+ if(p>0){
+ value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
+ el.add(attrName,value,start-1);
+ s = S_E;
+ }else{
+ //fatalError: no end quot match
+ throw new Error('attribute value no end \''+c+'\' match');
+ }
+ }else if(s == S_V){
+ value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
+ //console.log(attrName,value,start,p)
+ el.add(attrName,value,start);
+ //console.dir(el)
+ errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!');
+ start = p+1;
+ s = S_E
+ }else{
+ //fatalError: no equal before
+ throw new Error('attribute value must after "="');
+ }
+ break;
+ case '/':
+ switch(s){
+ case S_TAG:
+ el.setTagName(source.slice(start,p));
+ case S_E:
+ case S_S:
+ case S_C:
+ s = S_C;
+ el.closed = true;
+ case S_V:
+ case S_ATTR:
+ case S_ATTR_S:
+ break;
+ //case S_EQ:
+ default:
+ throw new Error("attribute invalid close char('/')")
+ }
+ break;
+ case '>':
+ switch(s){
+ case S_TAG:
+ el.setTagName(source.slice(start,p));
+ case S_E:
+ case S_S:
+ case S_C:
+ break;//normal
+ case S_V://Compatible state
+ case S_ATTR:
+ value = source.slice(start,p);
+ if(value.slice(-1) === '/'){
+ el.closed = true;
+ value = value.slice(0,-1)
+ }
+ case S_ATTR_S:
+ if(s === S_ATTR_S){
+ value = attrName;
+ }
+ if(s == S_V){
+ errorHandler.warning('attribute "'+value+'" missed quot(")!!');
+ el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start)
+ }else{
+ errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!')
+ el.add(value,value,start)
+ }
+ break;
+ case S_EQ:
+ throw new Error('attribute value missed!!');
+ }
+// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName))
+ return p;
+ /*xml space '\x20' | #x9 | #xD | #xA; */
+ case '\u0080':
+ c = ' ';
+ default:
+ if(c<= ' '){//space
+ switch(s){
+ case S_TAG:
+ el.setTagName(source.slice(start,p));//tagName
+ s = S_S;
+ break;
+ case S_ATTR:
+ attrName = source.slice(start,p)
+ s = S_ATTR_S;
+ break;
+ case S_V:
+ var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
+ errorHandler.warning('attribute "'+value+'" missed quot(")!!');
+ el.add(attrName,value,start)
+ case S_E:
+ s = S_S;
+ break;
+ //case S_S:
+ //case S_EQ:
+ //case S_ATTR_S:
+ // void();break;
+ //case S_C:
+ //ignore warning
+ }
+ }else{//not space
+//S_TAG, S_ATTR, S_EQ, S_V
+//S_ATTR_S, S_E, S_S, S_C
+ switch(s){
+ //case S_TAG:void();break;
+ //case S_ATTR:void();break;
+ //case S_V:void();break;
+ case S_ATTR_S:
+ errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!')
+ el.add(attrName,attrName,start);
+ start = p;
+ s = S_ATTR;
+ break;
+ case S_E:
+ errorHandler.warning('attribute space is required"'+attrName+'"!!')
+ case S_S:
+ s = S_ATTR;
+ start = p;
+ break;
+ case S_EQ:
+ s = S_V;
+ start = p;
+ break;
+ case S_C:
+ throw new Error("elements closed character '/' and '>' must be connected to");
+ }
+ }
+ }
+ p++;
+ }
+}
+/**
+ * @return end of the elementStartPart(end of elementEndPart for selfClosed el)
+ */
+function appendElement(el,domBuilder,parseStack){
+ var tagName = el.tagName;
+ var localNSMap = null;
+ var currentNSMap = parseStack[parseStack.length-1].currentNSMap;
+ var i = el.length;
+ while(i--){
+ var a = el[i];
+ var qName = a.qName;
+ var value = a.value;
+ var nsp = qName.indexOf(':');
+ if(nsp>0){
+ var prefix = a.prefix = qName.slice(0,nsp);
+ var localName = qName.slice(nsp+1);
+ var nsPrefix = prefix === 'xmlns' && localName
+ }else{
+ localName = qName;
+ prefix = null
+ nsPrefix = qName === 'xmlns' && ''
+ }
+ //can not set prefix,because prefix !== ''
+ a.localName = localName ;
+ //prefix == null for no ns prefix attribute
+ if(nsPrefix !== false){//hack!!
+ if(localNSMap == null){
+ localNSMap = {}
+ _copy(currentNSMap,currentNSMap={})
+ }
+ currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;
+ a.uri = 'http://www.w3.org/2000/xmlns/'
+ domBuilder.startPrefixMapping(nsPrefix, value)
+ }
+ }
+ var i = el.length;
+ while(i--){
+ a = el[i];
+ var prefix = a.prefix;
+ if(prefix){//no prefix attribute has no namespace
+ if(prefix === 'xml'){
+ a.uri = 'http://www.w3.org/XML/1998/namespace';
+ }if(prefix !== 'xmlns'){
+ a.uri = currentNSMap[prefix]
+ }
+ }
+ }
+ var nsp = tagName.indexOf(':');
+ if(nsp>0){
+ prefix = el.prefix = tagName.slice(0,nsp);
+ localName = el.localName = tagName.slice(nsp+1);
+ }else{
+ prefix = null;//important!!
+ localName = el.localName = tagName;
+ }
+ //no prefix element has default namespace
+ var ns = el.uri = currentNSMap[prefix || ''];
+ domBuilder.startElement(ns,localName,tagName,el);
+ //endPrefixMapping and startPrefixMapping have not any help for dom builder
+ //localNSMap = null
+ if(el.closed){
+ domBuilder.endElement(ns,localName,tagName);
+ if(localNSMap){
+ for(prefix in localNSMap){
+ domBuilder.endPrefixMapping(prefix)
+ }
+ }
+ }else{
+ el.currentNSMap = currentNSMap;
+ el.localNSMap = localNSMap;
+ parseStack.push(el);
+ }
+}
+function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){
+ if(/^(?:script|textarea)$/i.test(tagName)){
+ var elEndStart = source.indexOf('</'+tagName+'>',elStartEnd);
+ var text = source.substring(elStartEnd+1,elEndStart);
+ if(/[&<]/.test(text)){
+ if(/^script$/i.test(tagName)){
+ //if(!/\]\]>/.test(text)){
+ //lexHandler.startCDATA();
+ domBuilder.characters(text,0,text.length);
+ //lexHandler.endCDATA();
+ return elEndStart;
+ //}
+ }//}else{//text area
+ text = text.replace(/&#?\w+;/g,entityReplacer);
+ domBuilder.characters(text,0,text.length);
+ return elEndStart;
+ //}
+
+ }
+ }
+ return elStartEnd+1;
+}
+function fixSelfClosed(source,elStartEnd,tagName,closeMap){
+ //if(tagName in closeMap){
+ var pos = closeMap[tagName];
+ if(pos == null){
+ //console.log(tagName)
+ pos = closeMap[tagName] = source.lastIndexOf('</'+tagName+'>')
+ }
+ return pos<elStartEnd;
+ //}
+}
+function _copy(source,target){
+ for(var n in source){target[n] = source[n]}
+}
+function parseDCC(source,start,domBuilder){//sure start with '<!'
+ var next= source.charAt(start+2)
+ switch(next){
+ case '-':
+ if(source.charAt(start + 3) === '-'){
+ var end = source.indexOf('-->',start+4);
+ //append comment source.substring(4,end)//<!--
+ domBuilder.comment(source,start+4,end-start-4);
+ return end+3;
+ }else{
+ //error
+ return -1;
+ }
+ default:
+ if(source.substr(start+3,6) == 'CDATA['){
+ var end = source.indexOf(']]>',start+9);
+ domBuilder.startCDATA();
+ domBuilder.characters(source,start+9,end-start-9);
+ domBuilder.endCDATA()
+ return end+3;
+ }
+ //<!DOCTYPE
+ //startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
+ var matchs = split(source,start);
+ var len = matchs.length;
+ if(len>1 && /!doctype/i.test(matchs[0][0])){
+ var name = matchs[1][0];
+ var pubid = len>3 && /^public$/i.test(matchs[2][0]) && matchs[3][0]
+ var sysid = len>4 && matchs[4][0];
+ var lastMatch = matchs[len-1]
+ domBuilder.startDTD(name,pubid,sysid);
+ domBuilder.endDTD();
+
+ return lastMatch.index+lastMatch[0].length
+ }
+ }
+ return -1;
+}
+
+
+
+function parseInstruction(source,start,domBuilder){
+ var end = source.indexOf('?>',start);
+ if(end){
+ var match = source.substring(start,end).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
+ if(match){
+ var len = match[0].length;
+ domBuilder.processingInstruction(match[1], match[2]) ;
+ return end+2;
+ }else{//error
+ return -1;
+ }
+ }
+ return -1;
+}
+
+/**
+ * @param source
+ */
+function ElementAttributes(source){
+
+}
+ElementAttributes.prototype = {
+ setTagName:function(tagName){
+ if(!tagNamePattern.test(tagName)){
+ throw new Error('invalid tagName:'+tagName)
+ }
+ this.tagName = tagName
+ },
+ add:function(qName,value,offset){
+ if(!tagNamePattern.test(qName)){
+ throw new Error('invalid attribute:'+qName)
+ }
+ this[this.length++] = {qName:qName,value:value,offset:offset}
+ },
+ length:0,
+ getLocalName:function(i){return this[i].localName},
+ getOffset:function(i){return this[i].offset},
+ getQName:function(i){return this[i].qName},
+ getURI:function(i){return this[i].uri},
+ getValue:function(i){return this[i].value}
+// ,getIndex:function(uri, localName)){
+// if(localName){
+//
+// }else{
+// var qName = uri
+// }
+// },
+// getValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},
+// getType:function(uri,localName){}
+// getType:function(i){},
+}
+
+
+
+
+function _set_proto_(thiz,parent){
+ thiz.__proto__ = parent;
+ return thiz;
+}
+if(!(_set_proto_({},_set_proto_.prototype) instanceof _set_proto_)){
+ _set_proto_ = function(thiz,parent){
+ function p(){};
+ p.prototype = parent;
+ p = new p();
+ for(parent in thiz){
+ p[parent] = thiz[parent];
+ }
+ return p;
+ }
+}
+
+function split(source,start){
+ var match;
+ var buf = [];
+ var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
+ reg.lastIndex = start;
+ reg.exec(source);//skip <
+ while(match = reg.exec(source)){
+ buf.push(match);
+ if(match[1])return buf;
+ }
+}
+
+if(typeof require == 'function'){
+ exports.XMLReader = XMLReader;
+}
+
+if(typeof require == 'function'){
+exports.XMLReader=XMLReader;
+}
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover
new file mode 100755
index 0000000..5b146e4
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+rm -rf coverage
+
+count=1;
+for file in $(find t -name \*.t.js); do
+ node_modules/.bin/istanbul cover -x 't/**' $file > /dev/null 2>&1
+ mv coverage/coverage.json coverage/coverage$count.json
+ count=$(expr $count + 1)
+done
+
+node_modules/.bin/istanbul report --root coverage --dir coverage > /dev/null
+
+sed -i -e s,'^SF:'`pwd`/,SF:, coverage/lcov.info
+
+exit 0
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js
new file mode 100755
index 0000000..2464e93
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js
@@ -0,0 +1,5 @@
+#!/usr/bin/env node
+
+require('proof')(1, function (ok) {
+ ok(require('../..'), 'require');
+});
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test
new file mode 100755
index 0000000..460073e
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+echo ""
+
+(proof run t/*/*.t.js | tee .proof.out | proof progress) || (proof errors < .proof.out) || exit 1
+
+if [ "$TRAVIS" = "true" ]; then
+ echo "running with coverage"
+ t/cover
+
+ echo "submitting to coveralls.io"
+ (cat coverage/lcov.info | node_modules/.bin/coveralls) > /dev/null 2>&1
+fi
+
+echo ""
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js
new file mode 100644
index 0000000..1998125
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js
@@ -0,0 +1 @@
+require('./o3xml')
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js
new file mode 100644
index 0000000..42013e7
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js
@@ -0,0 +1 @@
+exports.test = 1;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js
new file mode 100644
index 0000000..26a86b2
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js
@@ -0,0 +1,21 @@
+var DOMParser = require('xmldom').DOMParser;
+require('./mock')
+//Compatibility
+{
+ var doc = new DOMParser().parseFromString("<xml/>",'text/xml');
+ var np = doc.__proto__.__proto__.__proto__;
+ for(var n in np){
+ if(/_NODE$/.test(n)){
+// console.log(n.replace(/_NODE$/,''),np[n])
+ np[n.replace(/_NODE$/,'')] = np[n];
+ }
+ }
+
+}
+
+require.cache[require.resolve('node-o3-xml')]
+ = require.cache[require.resolve('./mock')];
+require('node-o3-xml').parseFromString = function(xml){
+ return new DOMParser().parseFromString(xml,'text/xml');
+}
+require('node-o3-xml/test/test')
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js
new file mode 100644
index 0000000..a8007f9
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js
@@ -0,0 +1,152 @@
+var wows = require('vows');
+var assert = require('assert');
+var XMLSerializer = require('xmldom').XMLSerializer;
+var DOMParser = require('xmldom').DOMParser;
+var DomJS = require("dom-js").DomJS;
+try{
+ var Libxml = require('libxmljs');
+}catch(e){
+}
+
+function xmldom(data){
+ console.time('xmldom');
+ var doc = new DOMParser({locator:null,checkLater:true}).parseFromString(data);
+ console.timeEnd('xmldom');
+ doc.toString = function(){
+ return new XMLSerializer().serializeToString(doc);
+ }
+ return doc;
+}
+function libxml(data){
+ if(Libxml){
+ console.time('libxml');
+ var doc = Libxml.parseXmlString(data);
+ console.timeEnd('libxml');
+ var ToString=doc.toString ;
+ doc.toString = function(){
+ return ToString.apply(this,arguments).replace(/^\s+|\s+$/g,'');
+ }
+ return doc;
+ }else{
+ console.warn('libxml is not installed')
+ }
+}
+
+function domjs(data){
+ console.time('dom-js');
+ var doc;
+ new DomJS().parse(data, function(err, dom) {
+ doc = dom;
+ });
+ console.timeEnd('dom-js');
+
+ doc.toString = function(){
+ return doc.toXml();
+ }
+ return doc
+}
+var maxRandomAttr =parseInt(Math.random()*60);
+console.log('maxRandomAttr',maxRandomAttr)
+function addAttributes(el){
+ var c =parseInt(Math.random()*maxRandomAttr);
+ while(c--){
+ el.setAttribute('dynamic-attr'+c,c+new Array(c).join('.'));
+ }
+ var child = el.firstChild;
+ while(child){
+ if(child.nodeType == 1){
+ addAttributes(child)
+ }else if(child.nodeType == 4){//cdata
+ el.insertBefore(el.ownerDocument.createTextNode(child.data),child);
+ el.removeChild(child);
+ }
+ child = child.nextSibling;
+ }
+}
+// Create a Test Suite
+wows.describe('XML Node Parse').addBatch({
+ "big file parse":function(){
+ var fs = require('fs');
+ var path = require('path')
+ var data = fs.readFileSync(path.resolve(__dirname,'./test.xml'), 'ascii');
+ //data = "<?xml version=\"1.0\"?><xml><child> ![CDATA[v]] d &</child>\n</xml>"
+ console.log('test simple xml')
+ var t1 = new Date();
+ var doc1 = xmldom(data);
+ var t2 = new Date();
+ var doc2 = domjs(data);
+ var t3 = new Date();
+ var doc3 = libxml(data);
+ var t4 = new Date();
+ var xmldomTime = t2-t1;
+ var domjsTime = t3-t2;
+ console.assert(domjsTime>xmldomTime,'xmldom performance must more height!!')
+
+
+ doc1 = doc1.cloneNode(true);
+ addAttributes(doc1.documentElement);
+
+ data = doc1.toString();
+ console.log('test more attribute xml')
+ var t1 = new Date();
+ var doc1 = xmldom(data);
+ var t2 = new Date();
+ var doc2 = domjs(data);
+ var t3 = new Date();
+ var doc3 = libxml(data);
+ var t4 = new Date();
+ var xmldomTime = t2-t1;
+ var domjsTime = t3-t2;
+ console.assert(domjsTime>xmldomTime,'xmldom performance must more height!!')
+ function xmlReplace(a,v){
+ switch(v){
+ case '&':
+ return '&'
+ case '<':
+ return '<'
+ default:
+ if(v.length>1){
+ return v.replace(/([&<])/g,xmlReplace)
+ }
+ }
+ }
+ xmldomresult = (domjs(doc1+'')+'').replace(/^<\?.*?\?>\s*|<!\[CDATA\[([\s\S]*?)\]\]>/g,xmlReplace)
+ domjsresult = (doc2+'').replace(/^<\?.*?\?>\s*|<!\[CDATA\[([\s\S]*?)\]\]>/g,xmlReplace)
+ data = xmldomresult;
+ //console.log(data.substring(100,200))
+
+ console.log('test more attribute xml without cdata')
+ var t1 = new Date();
+ var doc1 = xmldom(data);
+ var t2 = new Date();
+ var doc2 = domjs(data);
+ var t3 = new Date();
+ var doc3 = libxml(data);
+ var t4 = new Date();
+ var xmldomTime = t2-t1;
+ var domjsTime = t3-t2;
+ console.assert(domjsTime>xmldomTime,'xmldom performance must more height!!')
+
+ //console.log(xmldomresult,domjsresult)
+
+ //assert.equal(xmldomresult,domjsresult);
+ //,xmldomresult,domjsresult)
+ if(xmldomresult !== domjsresult){
+ for(var i=0;i<xmldomresult.length;i++){
+ if(xmldomresult.charAt(i)!=domjsresult.charAt(i)){
+ console.log(xmldomresult.charAt(i))
+ var begin = i-50;
+ var len = 100;
+ xmldomresult = xmldomresult.substr(begin,len)
+ domjsresult = domjsresult.substr(begin,len)
+ //console.log(xmldomresult.length,domjsresult.length)
+ console.log('pos'+i,'\n',xmldomresult,'\n\n\n\n',domjsresult)
+ console.assert(xmldomresult == domjsresult)
+ break;
+ }
+ }
+
+ }
+ //console.assert(xmldomresult == domjsresult,xmldomresult.length,i)
+ }
+}).run(); // Run it
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js
new file mode 100644
index 0000000..b48cbde
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js
@@ -0,0 +1,64 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML attrs').addBatch({
+ "set attribute":function(){
+ var root = new DOMParser().parseFromString("<xml/>",'text/xml').documentElement;
+ root.setAttribute('a','1');
+ console.assert(root.attributes[0].localName == 'a');
+ root.setAttribute('b',2);
+ root.setAttribute('a',1);
+ root.setAttribute('a',1);
+ root.setAttribute('a',1);
+ console.assert(root.attributes.length == 2);
+ try {
+ var c = root.ownerDocument.createElement('c');
+ c.setAttributeNode(root.attributes.item(0));
+ } catch (e) {
+ console.assert(e.code == 10);
+ return;
+ }
+ console.assert(false);
+ },
+ "set ns attribute":function(){
+ var root = new DOMParser().parseFromString("<xml xmlns:a='a' xmlns:b='b' xmlns='e'><child/></xml>",'text/xml').documentElement;
+ var child = root.firstChild
+ child.setAttributeNS('a','a:a','1');
+ child.setAttributeNS('b','b:b','2');
+ child.setAttributeNS('b','b:a','1');
+ console.assert(child.attributes.length == 3,child.attributes.length,child+'');
+ child.setAttribute('a',1);
+ child.setAttributeNS('b','b:b','2');
+ console.assert(child.attributes.length == 4,child.attributes.length);
+ try {
+ var c = root.ownerDocument.createElement('c');
+ c.setAttributeNodeNS(root.attributes.item(0));
+ } catch (e) {
+ console.assert(e.code == 10);
+ return;
+ }
+ console.assert(false);
+ },
+ "override attribute":function(){
+ var root = new DOMParser().parseFromString("<xml xmlns:a='a' xmlns:b='b' xmlns='e'><child/></xml>",'text/xml').documentElement;
+ root.setAttributeNS('a','a:a','1');
+ console.assert(root.attributes.length == 4,root.attributes.length);
+//not standart
+// root.firstChild.setAttributeNode(root.attributes[0]);
+// console.assert(root.attributes.length == 0);
+ },
+ "attribute namespace":function(){
+ var root = new DOMParser().parseFromString("<xml xmlns:a='a' xmlns:b='b' a:b='e'></xml>",'text/xml').documentElement;
+ console.assert(root.getAttributeNS("a", "b"), "e");
+ },
+ "override ns attribute":function(){
+
+ },
+ "set existed attribute":function(){
+
+ },
+ "set document existed attribute":function(){
+
+ }
+}).run(); // Run it
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js
new file mode 100644
index 0000000..d8dff68
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js
@@ -0,0 +1,22 @@
+var wows = require('vows');
+var XMLSerializer = require('xmldom').XMLSerializer;
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+ 'clone': function () {
+ var doc1 = new DOMParser().parseFromString("<doc1 attr1='1' attr2='a2'>text1<child>text2</child></doc1>",'text/xml')
+ var n =doc1.cloneNode(true)
+ console.assert(n == new XMLSerializer().serializeToString(doc1))
+ },
+ 'import': function () {
+ var doc1 = new DOMParser().parseFromString("<doc2 attr='2'/>")
+ var doc2 = new DOMParser().parseFromString("<doc1 attr1='1' attr2='a2'>text1<child>text2</child></doc1>",'text/xml')
+
+ var doc3 = new DOMParser().parseFromString("<doc2 attr='2'><doc1 attr1='1' attr2='a2'>text1<child>text2</child></doc1></doc2>")
+ var n =doc1.importNode(doc2.documentElement, true)
+ doc1.documentElement.appendChild(n)
+ console.assert(doc1 == doc3+'')
+ console.assert(doc2 != doc3+'')
+ }
+}).run(); // Run it
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js
new file mode 100644
index 0000000..72a4efe
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js
@@ -0,0 +1,139 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+ // See: http://jsfiddle.net/bigeasy/ShcXP/1/
+ "Document_getElementsByTagName":function () {
+ var doc = new DOMParser().parseFromString('<a><b/></a>');
+ console.assert(doc.getElementsByTagName('*').length == 2);
+ console.assert(doc.documentElement.getElementsByTagName('*').length == 1);
+ },
+ 'getElementsByTagName': function () {
+
+
+ var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" xmlns:t="http://test.com" xmlns:t2="http://test2.com">' +
+ '<t:test/><test/><t2:test/>'+
+ '<child attr="1"><test><child attr="2"/></test></child>' +
+ '<child attr="3"/></xml>','text/xml');
+ var childs = doc.documentElement.getElementsByTagName('child');
+ console.assert(childs.item(0).getAttribute('attr')=="1",childs.item(0)+'');
+ console.assert(childs.item(1).getAttribute('attr')=="2",childs.item(1)+'');
+ console.assert(childs.item(2).getAttribute('attr')=="3",childs.item(2)+'');
+ console.assert(childs.length==3,3,childs.length);
+
+ var childs = doc.getElementsByTagName('child');
+ console.assert(childs.item(0).getAttribute('attr')=="1",childs.item(0)+'');
+ console.assert(childs.item(1).getAttribute('attr')=="2",childs.item(1)+'');
+ console.assert(childs.item(2).getAttribute('attr')=="3",childs.item(2)+'');
+ console.assert(childs.length==3,3,childs.length);
+
+
+
+
+
+ var childs = doc.documentElement.getElementsByTagName('*');
+ for(var i=0,buf = [];i<childs.length;i++){
+ buf.push(childs[i].tagName)
+ }
+ console.assert(childs.length==7,childs.length,buf);
+
+
+
+
+ var feed = new DOMParser().parseFromString('<feed><entry>foo</entry></feed>');
+ var entries = feed.documentElement.getElementsByTagName('entry');
+ console.log(entries[0].nodeName);
+ console.log(feed.documentElement.childNodes.item(0).nodeName);
+ },
+ 'getElementsByTagNameNS': function () {
+ var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" xmlns:t="http://test.com" xmlns:t2="http://test2.com">' +
+ '<t:test/><test/><t2:test/>'+
+ '<child attr="1"><test><child attr="2"/></test></child>' +
+ '<child attr="3"/></xml>','text/xml');
+
+ var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'*');
+ console.assert(childs.length==6,childs.length);
+
+ var childs = doc.getElementsByTagNameNS("http://test.com",'*');
+ console.assert(childs.length==7,childs.length);
+
+
+ var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'test');
+ console.assert(childs.length==3,childs.length);
+
+ var childs = doc.getElementsByTagNameNS("http://test.com",'test');
+ console.assert(childs.length==3,childs.length);
+
+
+
+ },
+ 'getElementById': function () {
+ var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+ '<child id="a1" title="1"><child id="a2" title="2"/></child>' +
+ '<child id="a1" title="3"/></xml>','text/xml');
+ console.assert(doc.getElementById('root'))
+ console.assert(doc.getElementById('a1').getAttribute('title')=="1",doc.getElementById('a1'));
+ console.assert(doc.getElementById('a2').getAttribute('title')=="2",doc.getElementById('a2'));
+ console.assert(doc.getElementById('a2').getAttribute('title2')=="",doc.getElementById('a2'));
+ },
+ "append exist child":function(){
+ var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+ '<child1 id="a1" title="1"><child11 id="a2" title="2"/></child1>' +
+ '<child2 id="a1" title="3"/><child3 id="a1" title="3"/></xml>','text/xml');
+
+ var doc1 = doc;
+ var str1=new XMLSerializer().serializeToString(doc);
+ var doc2 = doc1.cloneNode(true);
+ var doc3 = doc1.cloneNode(true);
+ var doc4 = doc1.cloneNode(true);
+
+ doc3.documentElement.appendChild(doc3.documentElement.lastChild);
+ doc4.documentElement.appendChild(doc4.documentElement.firstChild);
+
+ var str2=new XMLSerializer().serializeToString(doc2);
+ var str3=new XMLSerializer().serializeToString(doc3);
+ var str4=new XMLSerializer().serializeToString(doc4);
+ console.assert(str1 == str2 && str2 == str3,str3,str1);
+ console.assert(str3 != str4 && str3.length == str4.length,str3);
+
+ },
+ "append exist other child":function(){
+ var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+ '<child1 id="a1" title="1"><child11 id="a2" title="2"><child/></child11></child1>' +
+ '<child2 id="a1" title="3"/><child3 id="a1" title="3"/></xml>','text/xml');
+
+ var doc1 = doc;
+ var str1=new XMLSerializer().serializeToString(doc);
+ var doc2 = doc1.cloneNode(true);
+
+ console.assert(doc2.documentElement.lastChild.childNodes.length == 0);
+ doc2.documentElement.appendChild(doc2.documentElement.firstChild.firstChild);
+
+ var str2=new XMLSerializer().serializeToString(doc2);
+
+ console.assert(doc2.documentElement.lastChild.childNodes.length == 1);
+ console.assert(str1 != str2 && str1.length != str2.length,str3);
+ var doc3 = new DOMParser().parseFromString(str2,'text/xml');
+ doc3.documentElement.firstChild.appendChild(doc3.documentElement.lastChild);
+ var str3 = new XMLSerializer().serializeToString(doc3);
+ console.assert(str1 == str3);
+ },
+ "set textContent":function() {
+ var doc = new DOMParser().parseFromString('<test><a/><b><c/></b></test>');
+ var a = doc.documentElement.firstChild;
+ var b = a.nextSibling;
+ a.textContent = 'hello';
+ console.assert(doc.documentElement.toString() == '<test><a>hello</a><b><c/></b></test>');
+ b.textContent = 'there';
+ console.assert(doc.documentElement.toString() == '<test><a>hello</a><b>there</b></test>');
+ b.textContent = '';
+ console.assert(doc.documentElement.toString() == '<test><a>hello</a><b/></test>');
+ doc.documentElement.textContent = 'bye';
+ console.assert(doc.documentElement.toString() == '<test>bye</test>');
+ },
+ "nested append failed":function(){
+ },
+ "self append failed":function(){
+ }
+}).run(); // Run it
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js
new file mode 100644
index 0000000..3f72824
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js
@@ -0,0 +1,15 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+
+wows.describe('DOM DocumentFragment').addBatch({
+ // see: http://jsfiddle.net/9Wmh2/1/
+ "append empty fragment":function(){
+ var document = new DOMParser().parseFromString('<p id="p"/>');
+ var fragment = document.createDocumentFragment();
+ document.getElementById("p").insertBefore(fragment, null);
+ fragment.appendChild(document.createTextNode("a"));
+ document.getElementById("p").insertBefore(fragment, null);
+ console.assert(document.toString() == '<p id="p">a</p>', document.toString());
+ },
+}).run();
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js
new file mode 100644
index 0000000..201a0b0
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js
@@ -0,0 +1,5 @@
+require('./element');
+require('./level3');
+require('./clone');
+require('./attr');
+require('./serializer');
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js
new file mode 100644
index 0000000..b3810e2
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js
@@ -0,0 +1,8 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+ "test":function(){}
+ //see namespace.js
+}).run(); // Run it
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js
new file mode 100644
index 0000000..73d86ad
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js
@@ -0,0 +1,14 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+wows.describe('XML Serializer').addBatch({
+ 'text node containing "]]>"': function() {
+ var doc = new DOMParser().parseFromString('<test/>', 'text/xml');
+ doc.documentElement.appendChild(doc.createTextNode('hello ]]> there'));
+ console.assert(doc.documentElement.firstChild.toString() == 'hello ]]> there',doc.documentElement.firstChild.toString());
+ },
+ '<script> element with no children': function() {
+ var doc = new DOMParser().parseFromString('<html><script></script></html>', 'text/html');
+ console.assert(doc.documentElement.firstChild.toString() == '<script></script>');
+ },
+}).run();
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js
new file mode 100644
index 0000000..ec15a45
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js
@@ -0,0 +1,71 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+
+wows.describe('errorHandle').addBatch({
+ 'only function two args': function() {
+ var error = {}
+ var parser = new DOMParser({
+ errorHandler:function(key,msg){error[key] = msg}
+ });
+ try{
+ var doc = parser.parseFromString('<html disabled><1 1="2"/></body></html>', 'text/xml');
+ console.assert(error.warning!=null ,'error.error:'+error.warning);
+ console.assert(error.error!=null ,'error.error:'+error.error);
+ console.assert(error.fatalError!=null ,'error.error:'+error.fatalError);
+ //console.log(doc+'')
+ }catch(e){
+ }
+ },
+ 'only function': function() {
+ var error = []
+ var parser = new DOMParser({
+ errorHandler:function(msg){error.push(msg)}
+ });
+ try{
+ var doc = parser.parseFromString('<html disabled><1 1="2"/></body></html>', 'text/xml');
+ error.map(function(e){error[e.replace(/\:[\s\S]*/,'')]=e})
+ console.assert(error.warning!=null ,'error.error:'+error.warning);
+ console.assert(error.error!=null ,'error.error:'+error.error);
+ console.assert(error.fatalError!=null ,'error.error:'+error.fatalError);
+ //console.log(doc+'')
+ }catch(e){
+ }
+ },
+ 'only function': function() {
+ var error = []
+ var errorMap = []
+ new DOMParser({
+ errorHandler:function(msg){error.push(msg)}
+ }).parseFromString('<html><body title="1<2">test</body></html>', 'text/xml');
+ 'warn,warning,error,fatalError'.replace(/\w+/g,function(k){
+ var errorHandler = {};
+ errorMap[k] = [];
+ errorHandler[k] = function(msg){errorMap[k] .push(msg)}
+ new DOMParser({errorHandler:errorHandler}).parseFromString('<html><body title="1<2">test</body></html>', 'text/xml');
+ });
+ for(var n in errorMap){
+ console.assert(error.length == errorMap[n].length)
+ }
+ },
+ 'error function': function() {
+ var error = []
+ var parser = new DOMParser({
+ locator:{},
+ errorHandler:{
+ error:function(msg){
+ error.push(msg);
+ throw new Error(msg)
+ }
+ }
+ });
+ try{
+ var doc = parser.parseFromString('<html><body title="1<2"><table><;test</body></body></html>', 'text/html');
+ }catch(e){
+ console.log(e);
+ console.assert(/\n@#\[line\:\d+,col\:\d+\]/.test(error.join(' ')),'line,col must record:'+error)
+ return;
+ }
+ console.assert(false,doc+' should be null');
+ }
+}).run();
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js
new file mode 100644
index 0000000..b855bad
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js
@@ -0,0 +1,89 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+var parser = new DOMParser();
+// Create a Test Suite
+wows.describe('html normalizer').addBatch({
+ 'text & <': function () {
+ var dom = new DOMParser().parseFromString('<div>&<123&456<789;&&</div>','text/html');
+ console.assert(dom == '<div>&<123&456<789;&&</div>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<div><123e>&<a<br/></div>','text/html');
+ console.assert(dom == '<div><123e>&<a<br/></div>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<div> © ©</div>','text/html');
+ console.assert(dom == '<div>\u00a0\u00a9&nbsp&copy</div>',dom+'')
+
+
+ var dom = new DOMParser().parseFromString('<html xmlns:x="1"><body/></html>','text/html');
+ console.assert(dom == '<html xmlns:x="1"><body></body></html>',dom+'')
+ },
+ 'attr': function () {
+ var dom = new DOMParser().parseFromString('<html test="a<b && a>b && \'&&&\'"/>','text/html');
+ console.assert(dom == '<html test="a<b && a>b && \'&&&\'"></html>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<div test="alert(\'<br/>\')"/>','text/html');
+ console.assert(dom == '<div test="alert(\'<br/>\')"></div>',dom+'')
+ var dom = new DOMParser().parseFromString('<div test="a<b&&a< c && a>d"></div>','text/html');
+ console.assert(dom == '<div test="a<b&&a< c && a>d"></div>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<div a=& bb c d=123&&456/>','text/html');
+ console.assert(dom == '<div a="&" bb="bb" c="c" d="123&&456"></div>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<div a=& a="&\'\'" b/>','text/html');
+ console.assert(dom == '<div a="&\'\'" b="b"></div>',dom+'')
+ },
+ 'attrQute': function () {
+ var dom = new DOMParser().parseFromString('<html test="123"/>','text/html');
+ console.assert(dom == '<html test="123"></html>',dom+'')
+
+// var dom = new DOMParser().parseFromString('<r><Label onClick="doClick..>Hello, World</Label></r>','text/html');
+// console.assert(dom == '<r><Label onClick="doClick..">Hello, World</Label></r>',dom+'!!')
+//
+ var dom = new DOMParser().parseFromString('<Label onClick=doClick..">Hello, World</Label>','text/html');
+ console.assert(dom == '<Label onClick="doClick..">Hello, World</Label>',dom+'')
+ },
+ "unclosed":function(){
+ var dom = new DOMParser().parseFromString('<html><meta><link><img><br><hr><input></html>','text/html');
+ console.assert(dom == '<html><meta/><link/><img/><br/><hr/><input/></html>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<html title =1/2></html>','text/html');
+ console.assert(dom == '<html title="1/2"></html>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<html title= 1/>','text/html');
+ console.assert(dom == '<html title="1"></html>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<html title = 1/>','text/html');
+ console.assert(dom == '<html title="1"></html>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<html title/>','text/html');
+ console.assert(dom == '<html title="title"></html>',dom+'')
+
+
+
+ var dom = new DOMParser().parseFromString('<html><meta><link><img><br><hr><input></html>','text/html');
+ console.assert(dom == '<html><meta/><link/><img/><br/><hr/><input/></html>',dom+'')
+
+
+ },
+ 'script': function () {
+ var dom = new DOMParser().parseFromString('<script>alert(a<b&&c?"<br>":">>");</script>','text/html');
+ console.assert(dom == '<script>alert(a<b&&c?"<br>":">>");</script>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<script>alert(a<b&&c?"<br>":">>");</script>','text/xml');
+ console.assert(dom == '<script>alert(a<b&&c?"<br/>":">>");</script>',dom+'')
+
+ var dom = new DOMParser().parseFromString('<script>alert(a<b&&c?"<br/>":">>");</script>','text/html');
+ console.assert(dom == '<script>alert(a<b&&c?"<br/>":">>");</script>',dom+'')
+
+ },
+ 'textarea': function () {
+ var dom = new DOMParser().parseFromString('<textarea>alert(a<b&&c?"<br>":">>");</textarea>','text/html');
+ console.assert(dom == '<textarea>alert(a<b&&c?"<br>":">>");</textarea>',dom+'')
+
+
+ var dom = new DOMParser().parseFromString('<textarea>alert(a<b&&c?"<br>":">>");</textarea>','text/xml');
+ console.assert(dom == '<textarea>alert(a<b&&c?"<br/>":">>");</textarea>',dom+'')
+ }
+}).run();
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js
new file mode 100644
index 0000000..4b7703f
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js
@@ -0,0 +1,63 @@
+var XMLSerializer = require('xmldom').XMLSerializer;
+var DOMParser = require('xmldom').DOMParser;
+try{
+ var libxml = require('libxmljs');
+}catch(e){
+ var DomJS = require("dom-js");
+}
+
+var assert = require('assert');
+var oldParser = DOMParser.prototype.parseFromString ;
+function format(s){
+ if(libxml){
+ var result = libxml.parseXmlString(s).toString().replace(/^\s+|\s+$/g,'');
+ //console.log(result.charCodeAt().toString(16),result)
+ }else{
+ var domjs = new DomJS.DomJS();
+ domjs.parse(s, function(err, dom) {
+ result = dom.toXml();
+ });
+ }
+ return result;
+}
+function check(data,doc){
+ var domjsresult = format(data);
+ var xmldomresult = new XMLSerializer().serializeToString(doc);
+ var xmldomresult2 = new XMLSerializer().serializeToString(doc.cloneNode(true));
+ assert.equal(xmldomresult,xmldomresult2);
+ xmldomresult = xmldomresult.replace(/^<\?.*?\?>\s*|<!\[CDATA\[\]\]>/g,'')
+ domjsresult = domjsresult.replace(/^<\?.*?\?>\s*|<!\[CDATA\[\]\]>/g,'')
+ //console.log('['+xmldomresult+'],['+domjsresult+']')
+ if(xmldomresult!=domjsresult){
+ assert.equal(format(xmldomresult),domjsresult);
+ }
+
+}
+DOMParser.prototype.parseFromString = function(data,mimeType){
+ var doc = oldParser.apply(this,arguments);
+ function ck(){
+ if(!/\/x?html?\b/.test(mimeType)){
+ try{
+ check(data,doc);
+ }catch(e){console.dir(e)}
+ }
+ }
+ if(this.options.checkLater){
+ setTimeout(ck,1);
+ }else{ck()}
+ return doc;
+}
+function include(){
+ for(var i=0;i<arguments.length;i++){
+ var file = arguments[i]
+ console.log('test ',file);
+ require(file);
+ }
+}
+include('./dom','./parse-element','./node','./namespace','./html/normalize'
+ ,'./error','./locator'
+ ,'./big-file-performance'
+ )
+
+
+
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js
new file mode 100644
index 0000000..912520a
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js
@@ -0,0 +1,50 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+function assertPosition(n, line, col) {
+ console.assert(n.lineNumber == line,'lineNumber:'+n.lineNumber+'/'+line);
+ console.assert(n.columnNumber == col,'columnNumber:'+n.columnNumber+'/'+col);
+}
+
+wows.describe('DOMLocator').addBatch({
+ 'node positions': function() {
+ var parser = new DOMParser({locator:{}});
+ var doc = parser.parseFromString('<?xml version="1.0"?><!-- aaa -->\n<test>\n <a attr="value"><![CDATA[1]]>something\n</a>x</test>', 'text/xml');
+ var test = doc.documentElement;
+ var a = test.firstChild.nextSibling;
+ assertPosition(doc.firstChild, 1, 1);
+ assertPosition(doc.firstChild.nextSibling, 1, 1+'<?xml version="1.0"?>'.length);
+ assertPosition(test, 2, 1);
+ //assertPosition(test.firstChild, 1, 7);
+ assertPosition(a, 3, 3);
+ assertPosition(a.firstChild, 3, 19);
+ assertPosition(a.firstChild.nextSibling, 3, 19+'<![CDATA[1]]>'.length);
+ assertPosition(test.lastChild, 4, 5);
+ },
+ 'error positions':function(){
+ var error = []
+ var parser = new DOMParser({
+ locator:{systemId:'c:/test/1.xml'},
+ errorHandler:function(msg){
+ error.push(msg);
+ }
+ });
+ var doc = parser.parseFromString('<html><body title="1<2"><table><;test</body></body></html>', 'text/html');
+ console.assert(/\n@c\:\/test\/1\.xml#\[line\:\d+,col\:\d+\]/.test(error.join(' ')),'line,col must record:'+error)
+ },
+ 'error positions p':function(){
+ var error = []
+ var parser = new DOMParser({
+ locator:{},
+ errorHandler:function(msg){
+ error.push(msg);
+ }
+ });
+ var doc = parser.parseFromString('<root>\n\t<err</root>', 'text/html');
+ var root = doc.documentElement;
+ var textNode = root.firstChild;
+ console.log(root+'/'+textNode)
+ console.assert(/\n@#\[line\:2,col\:2\]/.test(error.join(' ')),'line,col must record:'+error);
+ console.log(textNode.lineNumber+'/'+textNode.columnNumber)
+ }
+}).run();
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js
new file mode 100644
index 0000000..a06248c
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js
@@ -0,0 +1,32 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+ 'default namespace': function () {
+ var dom = new DOMParser().parseFromString('<xml xmlns="http://test.com"><child attr="1"/></xml>','text/xml');
+ var root = dom.documentElement;
+ console.assert(root.namespaceURI=='http://test.com')
+ console.assert(root.lookupNamespaceURI('') == 'http://test.com')
+ console.assert(root.firstChild.namespaceURI=='http://test.com')
+ console.assert(root.firstChild.lookupNamespaceURI('') == 'http://test.com')
+ console.assert(root.firstChild.getAttributeNode('attr').namespaceURI==null)
+ },
+ 'prefix namespace': function () {
+ var dom = new DOMParser().parseFromString('<xml xmlns:p1="http://p1.com" xmlns:p2="http://p2.com"><p1:child a="1" p1:attr="1" b="2"/><p2:child/></xml>','text/xml');
+ var root = dom.documentElement;
+ console.assert(root.firstChild.namespaceURI == 'http://p1.com')
+ console.assert(root.lookupNamespaceURI('p1') == 'http://p1.com')
+ console.assert(root.firstChild.getAttributeNode('attr') == null)
+ console.assert(root.firstChild.getAttributeNode('p1:attr').namespaceURI == 'http://p1.com')
+ console.assert(root.firstChild.nextSibling.namespaceURI == 'http://p2.com')
+ console.assert(root.firstChild.nextSibling.lookupNamespaceURI('p2') == 'http://p2.com')
+ },
+ 'after prefix namespace': function () {
+ var dom = new DOMParser().parseFromString('<xml xmlns:p="http://test.com"><p:child xmlns:p="http://p.com"/><p:child/></xml>','text/xml');
+ var root = dom.documentElement;
+ console.assert(root.firstChild.namespaceURI=='http://p.com')
+ console.assert(root.lastChild.namespaceURI=='http://test.com')
+ console.assert(root.firstChild.nextSibling.lookupNamespaceURI('p') == 'http://test.com')
+ }
+}).run(); // Run it
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js
new file mode 100644
index 0000000..6527eee
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js
@@ -0,0 +1,102 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+var parser = new DOMParser();
+// Create a Test Suite
+wows.describe('XML Node Parse').addBatch({
+ 'element': function () {
+ var dom = new DOMParser().parseFromString('<xml><child/></xml>');
+ console.assert (dom.childNodes.length== 1,dom.childNodes.length, 1);
+ console.assert (dom.documentElement.childNodes.length== 1);
+ console.assert (dom.documentElement.tagName== 'xml');
+ console.assert (dom.documentElement.firstChild.tagName== 'child');
+ },
+ 'text':function(){
+ var dom = new DOMParser().parseFromString('<xml>start center end</xml>');
+ var root = dom.documentElement;
+ console.assert( root.firstChild.data =='start center end');
+ console.assert( root.firstChild.nextSibling ==null);
+ },
+ 'cdata': function () {
+ var dom = new DOMParser().parseFromString('<xml>start <![CDATA[<encoded>]]> end<![CDATA[[[[[[[[[]]]]]]]]]]></xml>');
+ var root = dom.documentElement;
+ console.assert ( root.firstChild.data =='start ');
+ console.assert ( root.firstChild.nextSibling.data =='<encoded>');
+ console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.data =='[[[[[[[[]]]]]]]]');
+ },
+ 'cdata empty': function () {
+ var dom = new DOMParser().parseFromString('<xml><![CDATA[]]>start <![CDATA[]]> end</xml>');
+ var root = dom.documentElement;
+ console.assert ( root.textContent =='start end');
+ },
+ 'comment': function(){
+ var dom = new DOMParser().parseFromString('<xml><!-- comment&>< --></xml>');
+ var root = dom.documentElement;
+ console.assert ( root.firstChild.nodeValue ==' comment&>< ');
+ },
+ 'cdata comment': function(){
+ var dom = new DOMParser().parseFromString('<xml>start <![CDATA[<encoded>]]> <!-- comment -->end</xml>');
+ var root = dom.documentElement;
+ console.assert ( root.firstChild.nodeValue =='start ');
+ console.assert ( root.firstChild.nextSibling.nodeValue =='<encoded>');
+ console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue ==' comment ');
+ console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue =='end');
+ },
+ 'append node': function () {
+ var dom = new DOMParser().parseFromString('<xml/>');
+ var child = dom.createElement("child");
+ console.assert ( child == dom.documentElement.appendChild(child));
+ console.assert ( child == dom.documentElement.firstChild);
+ var fragment = new dom.createDocumentFragment();
+ console.assert ( child == fragment.appendChild(child));
+ },
+ 'insert node': function () {
+ var dom = new DOMParser().parseFromString('<xml><child/></xml>');
+ var node = dom.createElement("sibling");
+ var child = dom.documentElement.firstChild;
+ child.parentNode.insertBefore(node, child);
+ console.assert ( node == child.previousSibling);
+ console.assert ( node.nextSibling == child);
+ console.assert ( node.parentNode == child.parentNode);
+ },
+ 'insert fragment': function () {
+ var dom = new DOMParser().parseFromString('<xml><child/></xml>');
+ var fragment = dom.createDocumentFragment();
+ assert(fragment.nodeType === 11);
+ var first = fragment.appendChild(dom.createElement("first"));
+ var last = fragment.appendChild(dom.createElement("last"));
+ console.assert ( fragment.firstChild == first);
+ console.assert ( fragment.lastChild == last);
+ console.assert ( last.previousSibling == first);
+ console.assert ( first.nextSibling == last);
+ var child = dom.documentElement.firstChild;
+ child.parentNode.insertBefore(fragment, child);
+ console.assert ( last.previousSibling == first);
+ console.assert ( first.nextSibling == last);
+ console.assert ( child.parentNode.firstChild == first);
+ console.assert ( last == child.previousSibling);
+ console.assert ( last.nextSibling == child);
+ console.assert ( first.parentNode == child.parentNode);
+ console.assert ( last.parentNode == child.parentNode);
+ }
+}).addBatch({
+ "instruction":function(){
+ var source = '<?xml version="1.0"?><root><child>&<!-- & --></child></root>';
+ var doc = new DOMParser().parseFromString(source,"text/xml");
+ var source2 = new XMLSerializer().serializeToString(doc);
+ console.assert(source == source2,source2);
+ }
+}).run(); // Run it
+//var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;
+//var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;
+//var TEXT_NODE = NodeType.TEXT_NODE = 3;
+//var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;
+//var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;
+//var ENTITY_NODE = NodeType.ENTITY_NODE = 6;
+//var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;
+//var COMMENT_NODE = NodeType.COMMENT_NODE = 8;
+//var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;
+//var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;
+//var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;
+//var NOTATION_NODE = NodeType.NOTATION_NODE = 12;
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js
new file mode 100644
index 0000000..53b8395
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js
@@ -0,0 +1,31 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+var parser = new DOMParser();
+// Create a Test Suite
+wows.describe('XML Node Parse').addBatch({
+ 'noAttribute': function () {
+ var dom = new DOMParser().parseFromString('<xml ></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml />','text/xml');
+ var dom = new DOMParser().parseFromString('<xml/>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml/>','text/xml');
+ },
+ 'simpleAttribute': function () {
+ var dom = new DOMParser().parseFromString('<xml a="1" b="2"></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b="2" ></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b=\'\'></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b=\'\' ></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b="2/">','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b="2" />','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b=\'\'/>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml a="1" b=\'\' />','text/xml');
+ },
+ 'nsAttribute': function () {
+ var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3"></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3" ></xml>','text/xml');
+ var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3/">','text/xml');
+ var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3" />','text/xml');
+ }
+}).run();
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js
new file mode 100644
index 0000000..4a398be
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js
@@ -0,0 +1,11 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+
+wows.describe('errorHandle').addBatch({
+ 'simple': function() {
+ var parser = new DOMParser();
+ var doc = parser.parseFromString('<html><body title="1<2"></body></html>', 'text/html');
+ console.log(doc+'');
+ }
+}).run();
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js
new file mode 100644
index 0000000..a8aa97f
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js
@@ -0,0 +1,24 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+
+
+var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+ '<child1 id="a1" title="1"><child11 id="a2" title="2"/></child1>' +
+ '<child2 id="a1" title="3"/><child3 id="a1" title="3"/></xml>','text/xml');
+
+var doc1 = doc;
+var str1=new XMLSerializer().serializeToString(doc);
+var doc2 = doc1.cloneNode(true);
+var doc3 = doc1.cloneNode(true);
+var doc4 = doc1.cloneNode(true);
+
+doc3.documentElement.appendChild(doc3.documentElement.lastChild);
+//doc4.documentElement.appendChild(doc4.documentElement.firstChild);
+
+var str2=new XMLSerializer().serializeToString(doc2);
+var str3=new XMLSerializer().serializeToString(doc3);
+var str4=new XMLSerializer().serializeToString(doc4);
+console.assert(str1 == str3,str3,str1);
+//console.assert(str3 != str4 && str3.length == str4.length,str3);