@xmldom/xmldom 0.7.9 → 0.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/lib/entities.js +2137 -244
- package/lib/sax.js +20 -18
- package/package.json +1 -1
package/lib/sax.js
CHANGED
|
@@ -12,7 +12,7 @@ var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:
|
|
|
12
12
|
//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
|
|
13
13
|
//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
|
|
14
14
|
var S_TAG = 0;//tag name offerring
|
|
15
|
-
var S_ATTR = 1;//attr name offerring
|
|
15
|
+
var S_ATTR = 1;//attr name offerring
|
|
16
16
|
var S_ATTR_SPACE=2;//attr name end and space offer
|
|
17
17
|
var S_EQ = 3;//=space?
|
|
18
18
|
var S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)
|
|
@@ -36,7 +36,7 @@ ParseError.prototype = new Error();
|
|
|
36
36
|
ParseError.prototype.name = ParseError.name
|
|
37
37
|
|
|
38
38
|
function XMLReader(){
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
XMLReader.prototype = {
|
|
@@ -66,7 +66,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
|
|
|
66
66
|
function entityReplacer(a){
|
|
67
67
|
var k = a.slice(1,-1);
|
|
68
68
|
if(k in entityMap){
|
|
69
|
-
return entityMap[k];
|
|
69
|
+
return entityMap[k];
|
|
70
70
|
}else if(k.charAt(0) === '#'){
|
|
71
71
|
return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))
|
|
72
72
|
}else{
|
|
@@ -95,7 +95,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
|
|
|
95
95
|
var lineEnd = 0;
|
|
96
96
|
var linePattern = /.*(?:\r\n?|\n)|.*$/g
|
|
97
97
|
var locator = domBuilder.locator;
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
var parseStack = [{currentNSMap:defaultNSMapCopy}]
|
|
100
100
|
var closeMap = {};
|
|
101
101
|
var start = 0;
|
|
@@ -120,7 +120,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
|
|
|
120
120
|
var tagName = source.substring(tagStart + 2, end).replace(/[ \t\n\r]+$/g, '');
|
|
121
121
|
var config = parseStack.pop();
|
|
122
122
|
if(end<0){
|
|
123
|
-
|
|
123
|
+
|
|
124
124
|
tagName = source.substring(tagStart+2).replace(/[\s<].*/,'');
|
|
125
125
|
errorHandler.error("end tag name: "+tagName+' is not complete:'+config.tagName);
|
|
126
126
|
end = tagStart+1+tagName.length;
|
|
@@ -147,7 +147,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
|
|
|
147
147
|
}else{
|
|
148
148
|
parseStack.push(config)
|
|
149
149
|
}
|
|
150
|
-
|
|
150
|
+
|
|
151
151
|
end++;
|
|
152
152
|
break;
|
|
153
153
|
// end elment
|
|
@@ -166,8 +166,8 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
|
|
|
166
166
|
//elStartEnd
|
|
167
167
|
var end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler);
|
|
168
168
|
var len = el.length;
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
|
|
170
|
+
|
|
171
171
|
if(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){
|
|
172
172
|
el.closed = true;
|
|
173
173
|
if(!entityMap.nbsp){
|
|
@@ -297,7 +297,9 @@ function parseElementStartPart(source,start,el,currentNSMap,entityReplacer,error
|
|
|
297
297
|
el.closed = true;
|
|
298
298
|
case S_ATTR_NOQUOT_VALUE:
|
|
299
299
|
case S_ATTR:
|
|
300
|
-
|
|
300
|
+
break;
|
|
301
|
+
case S_ATTR_SPACE:
|
|
302
|
+
el.closed = true;
|
|
301
303
|
break;
|
|
302
304
|
//case S_EQ:
|
|
303
305
|
default:
|
|
@@ -431,7 +433,7 @@ function appendElement(el,domBuilder,currentNSMap){
|
|
|
431
433
|
}
|
|
432
434
|
//can not set prefix,because prefix !== ''
|
|
433
435
|
a.localName = localName ;
|
|
434
|
-
//prefix == null for no ns prefix attribute
|
|
436
|
+
//prefix == null for no ns prefix attribute
|
|
435
437
|
if(nsPrefix !== false){//hack!!
|
|
436
438
|
if(localNSMap == null){
|
|
437
439
|
localNSMap = {}
|
|
@@ -441,7 +443,7 @@ function appendElement(el,domBuilder,currentNSMap){
|
|
|
441
443
|
}
|
|
442
444
|
currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;
|
|
443
445
|
a.uri = NAMESPACE.XMLNS
|
|
444
|
-
domBuilder.startPrefixMapping(nsPrefix, value)
|
|
446
|
+
domBuilder.startPrefixMapping(nsPrefix, value)
|
|
445
447
|
}
|
|
446
448
|
}
|
|
447
449
|
var i = el.length;
|
|
@@ -453,7 +455,7 @@ function appendElement(el,domBuilder,currentNSMap){
|
|
|
453
455
|
a.uri = NAMESPACE.XML;
|
|
454
456
|
}if(prefix !== 'xmlns'){
|
|
455
457
|
a.uri = currentNSMap[prefix || '']
|
|
456
|
-
|
|
458
|
+
|
|
457
459
|
//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}
|
|
458
460
|
}
|
|
459
461
|
}
|
|
@@ -504,7 +506,7 @@ function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBui
|
|
|
504
506
|
domBuilder.characters(text,0,text.length);
|
|
505
507
|
return elEndStart;
|
|
506
508
|
//}
|
|
507
|
-
|
|
509
|
+
|
|
508
510
|
}
|
|
509
511
|
}
|
|
510
512
|
return elStartEnd+1;
|
|
@@ -521,7 +523,7 @@ function fixSelfClosed(source,elStartEnd,tagName,closeMap){
|
|
|
521
523
|
closeMap[tagName] =pos
|
|
522
524
|
}
|
|
523
525
|
return pos<elStartEnd;
|
|
524
|
-
//}
|
|
526
|
+
//}
|
|
525
527
|
}
|
|
526
528
|
|
|
527
529
|
function _copy (source, target) {
|
|
@@ -555,11 +557,11 @@ function parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'
|
|
|
555
557
|
var end = source.indexOf(']]>',start+9);
|
|
556
558
|
domBuilder.startCDATA();
|
|
557
559
|
domBuilder.characters(source,start+9,end-start-9);
|
|
558
|
-
domBuilder.endCDATA()
|
|
560
|
+
domBuilder.endCDATA()
|
|
559
561
|
return end+3;
|
|
560
562
|
}
|
|
561
563
|
//<!DOCTYPE
|
|
562
|
-
//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
|
|
564
|
+
//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
|
|
563
565
|
var matchs = split(source,start);
|
|
564
566
|
var len = matchs.length;
|
|
565
567
|
if(len>1 && /!doctype/i.test(matchs[0][0])){
|
|
@@ -577,7 +579,7 @@ function parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'
|
|
|
577
579
|
var lastMatch = matchs[len-1]
|
|
578
580
|
domBuilder.startDTD(name, pubid, sysid);
|
|
579
581
|
domBuilder.endDTD();
|
|
580
|
-
|
|
582
|
+
|
|
581
583
|
return lastMatch.index+lastMatch[0].length
|
|
582
584
|
}
|
|
583
585
|
}
|
|
@@ -626,7 +628,7 @@ ElementAttributes.prototype = {
|
|
|
626
628
|
getValue:function(i){return this[i].value}
|
|
627
629
|
// ,getIndex:function(uri, localName)){
|
|
628
630
|
// if(localName){
|
|
629
|
-
//
|
|
631
|
+
//
|
|
630
632
|
// }else{
|
|
631
633
|
// var qName = uri
|
|
632
634
|
// }
|