mirror of
https://github.com/apache/cordova-android.git
synced 2026-04-23 00:00:09 +08:00
CB-12621: reverted elementtree dep to 0.1.6
This commit is contained in:
+25
@@ -0,0 +1,25 @@
|
||||
// set this really low so that I don't have to put 64 MB of xml in here.
|
||||
var sax = require("../lib/sax")
|
||||
var bl = sax.MAX_BUFFER_LENGTH
|
||||
sax.MAX_BUFFER_LENGTH = 5;
|
||||
|
||||
require(__dirname).test({
|
||||
expect : [
|
||||
["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 15\nChar: "],
|
||||
["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 30\nChar: "],
|
||||
["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 45\nChar: "],
|
||||
["opentag", {
|
||||
"name": "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
"attributes": {}
|
||||
}],
|
||||
["text", "yo"],
|
||||
["closetag", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"]
|
||||
]
|
||||
}).write("<abcdefghijklmn")
|
||||
.write("opqrstuvwxyzABC")
|
||||
.write("DEFGHIJKLMNOPQR")
|
||||
.write("STUVWXYZ>")
|
||||
.write("yo")
|
||||
.write("</abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>")
|
||||
.close();
|
||||
sax.MAX_BUFFER_LENGTH = bl
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
|
||||
require(__dirname).test({
|
||||
expect : [
|
||||
["opentag", {"name": "R","attributes": {}}],
|
||||
["opencdata", undefined],
|
||||
["cdata", " this is character data "],
|
||||
["closecdata", undefined],
|
||||
["closetag", "R"]
|
||||
]
|
||||
}).write("<r><![CDATA[ this is ").write("character data ").write("]]></r>").close();
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
|
||||
require(__dirname).test({
|
||||
expect : [
|
||||
["opentag", {"name": "R","attributes": {}}],
|
||||
["opencdata", undefined],
|
||||
["cdata", " this is "],
|
||||
["closecdata", undefined],
|
||||
["closetag", "R"]
|
||||
]
|
||||
})
|
||||
.write("<r><![CDATA[ this is ]")
|
||||
.write("]>")
|
||||
.write("</r>")
|
||||
.close();
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
|
||||
var p = require(__dirname).test({
|
||||
expect : [
|
||||
["opentag", {"name": "R","attributes": {}}],
|
||||
["opencdata", undefined],
|
||||
["cdata", "[[[[[[[[]]]]]]]]"],
|
||||
["closecdata", undefined],
|
||||
["closetag", "R"]
|
||||
]
|
||||
})
|
||||
var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
|
||||
for (var i = 0; i < x.length ; i ++) {
|
||||
p.write(x.charAt(i))
|
||||
}
|
||||
p.close();
|
||||
|
||||
|
||||
var p2 = require(__dirname).test({
|
||||
expect : [
|
||||
["opentag", {"name": "R","attributes": {}}],
|
||||
["opencdata", undefined],
|
||||
["cdata", "[[[[[[[[]]]]]]]]"],
|
||||
["closecdata", undefined],
|
||||
["closetag", "R"]
|
||||
]
|
||||
})
|
||||
var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
|
||||
p2.write(x).close();
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
|
||||
require(__dirname).test({
|
||||
expect : [
|
||||
["opentag", {"name": "R","attributes": {}}],
|
||||
["opencdata", undefined],
|
||||
["cdata", " this is "],
|
||||
["closecdata", undefined],
|
||||
["opencdata", undefined],
|
||||
["cdata", "character data "],
|
||||
["closecdata", undefined],
|
||||
["closetag", "R"]
|
||||
]
|
||||
}).write("<r><![CDATA[ this is ]]>").write("<![CDA").write("T").write("A[")
|
||||
.write("character data ").write("]]></r>").close();
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
require(__dirname).test({
|
||||
xml : "<r><![CDATA[ this is character data ]]></r>",
|
||||
expect : [
|
||||
["opentag", {"name": "R","attributes": {}}],
|
||||
["opencdata", undefined],
|
||||
["cdata", " this is character data "],
|
||||
["closecdata", undefined],
|
||||
["closetag", "R"]
|
||||
]
|
||||
});
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
var globalsBefore = JSON.stringify(Object.keys(global))
|
||||
, util = require("util")
|
||||
, assert = require("assert")
|
||||
, fs = require("fs")
|
||||
, path = require("path")
|
||||
, sax = require("../lib/sax")
|
||||
|
||||
exports.sax = sax
|
||||
|
||||
// handy way to do simple unit tests
|
||||
// if the options contains an xml string, it'll be written and the parser closed.
|
||||
// otherwise, it's assumed that the test will write and close.
|
||||
exports.test = function test (options) {
|
||||
var xml = options.xml
|
||||
, parser = sax.parser(options.strict, options.opt)
|
||||
, expect = options.expect
|
||||
, e = 0
|
||||
sax.EVENTS.forEach(function (ev) {
|
||||
parser["on" + ev] = function (n) {
|
||||
if (process.env.DEBUG) {
|
||||
console.error({ expect: expect[e]
|
||||
, actual: [ev, n] })
|
||||
}
|
||||
if (e >= expect.length && (ev === "end" || ev === "ready")) return
|
||||
assert.ok( e < expect.length,
|
||||
"expectation #"+e+" "+util.inspect(expect[e])+"\n"+
|
||||
"Unexpected event: "+ev+" "+(n ? util.inspect(n) : ""))
|
||||
var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n)
|
||||
assert.equal(ev, expect[e][0],
|
||||
"expectation #"+e+"\n"+
|
||||
"Didn't get expected event\n"+
|
||||
"expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+
|
||||
"actual: "+ev+" "+inspected+"\n")
|
||||
if (ev === "error") assert.equal(n.message, expect[e][1])
|
||||
else assert.deepEqual(n, expect[e][1],
|
||||
"expectation #"+e+"\n"+
|
||||
"Didn't get expected argument\n"+
|
||||
"expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+
|
||||
"actual: "+ev+" "+inspected+"\n")
|
||||
e++
|
||||
if (ev === "error") parser.resume()
|
||||
}
|
||||
})
|
||||
if (xml) parser.write(xml).close()
|
||||
return parser
|
||||
}
|
||||
|
||||
if (module === require.main) {
|
||||
var running = true
|
||||
, failures = 0
|
||||
|
||||
function fail (file, er) {
|
||||
util.error("Failed: "+file)
|
||||
util.error(er.stack || er.message)
|
||||
failures ++
|
||||
}
|
||||
|
||||
fs.readdir(__dirname, function (error, files) {
|
||||
files = files.filter(function (file) {
|
||||
return (/\.js$/.exec(file) && file !== 'index.js')
|
||||
})
|
||||
var n = files.length
|
||||
, i = 0
|
||||
console.log("0.." + n)
|
||||
files.forEach(function (file) {
|
||||
// run this test.
|
||||
try {
|
||||
require(path.resolve(__dirname, file))
|
||||
var globalsAfter = JSON.stringify(Object.keys(global))
|
||||
if (globalsAfter !== globalsBefore) {
|
||||
var er = new Error("new globals introduced\n"+
|
||||
"expected: "+globalsBefore+"\n"+
|
||||
"actual: "+globalsAfter)
|
||||
globalsBefore = globalsAfter
|
||||
throw er
|
||||
}
|
||||
console.log("ok " + (++i) + " - " + file)
|
||||
} catch (er) {
|
||||
console.log("not ok "+ (++i) + " - " + file)
|
||||
fail(file, er)
|
||||
}
|
||||
})
|
||||
if (!failures) return console.log("#all pass")
|
||||
else return console.error(failures + " failure" + (failures > 1 ? "s" : ""))
|
||||
})
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
|
||||
require(__dirname).test
|
||||
( { xml :
|
||||
"<compileClassesResponse>"+
|
||||
"<result>"+
|
||||
"<bodyCrc>653724009</bodyCrc>"+
|
||||
"<column>-1</column>"+
|
||||
"<id>01pG0000002KoSUIA0</id>"+
|
||||
"<line>-1</line>"+
|
||||
"<name>CalendarController</name>"+
|
||||
"<success>true</success>"+
|
||||
"</result>"+
|
||||
"</compileClassesResponse>"
|
||||
|
||||
, expect :
|
||||
[ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ]
|
||||
, [ "opentag", { name : "RESULT", attributes: {} } ]
|
||||
, [ "opentag", { name: "BODYCRC", attributes: {} } ]
|
||||
, [ "text", "653724009" ]
|
||||
, [ "closetag", "BODYCRC" ]
|
||||
, [ "opentag", { name: "COLUMN", attributes: {} } ]
|
||||
, [ "text", "-1" ]
|
||||
, [ "closetag", "COLUMN" ]
|
||||
, [ "opentag", { name: "ID", attributes: {} } ]
|
||||
, [ "text", "01pG0000002KoSUIA0" ]
|
||||
, [ "closetag", "ID" ]
|
||||
, [ "opentag", {name: "LINE", attributes: {} } ]
|
||||
, [ "text", "-1" ]
|
||||
, [ "closetag", "LINE" ]
|
||||
, [ "opentag", {name: "NAME", attributes: {} } ]
|
||||
, [ "text", "CalendarController" ]
|
||||
, [ "closetag", "NAME" ]
|
||||
, [ "opentag", {name: "SUCCESS", attributes: {} } ]
|
||||
, [ "text", "true" ]
|
||||
, [ "closetag", "SUCCESS" ]
|
||||
, [ "closetag", "RESULT" ]
|
||||
, [ "closetag", "COMPILECLASSESRESPONSE" ]
|
||||
]
|
||||
, strict : false
|
||||
, opt : {}
|
||||
}
|
||||
)
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// https://github.com/isaacs/sax-js/issues/33
|
||||
require(__dirname).test
|
||||
( { xml : "<xml>\n"+
|
||||
"<!-- \n"+
|
||||
" comment with a single dash- in it\n"+
|
||||
"-->\n"+
|
||||
"<data/>\n"+
|
||||
"</xml>"
|
||||
|
||||
, expect :
|
||||
[ [ "opentag", { name: "xml", attributes: {} } ]
|
||||
, [ "text", "\n" ]
|
||||
, [ "comment", " \n comment with a single dash- in it\n" ]
|
||||
, [ "text", "\n" ]
|
||||
, [ "opentag", { name: "data", attributes: {} } ]
|
||||
, [ "closetag", "data" ]
|
||||
, [ "text", "\n" ]
|
||||
, [ "closetag", "xml" ]
|
||||
]
|
||||
, strict : true
|
||||
, opt : {}
|
||||
}
|
||||
)
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// https://github.com/isaacs/sax-js/issues/35
|
||||
require(__dirname).test
|
||||
( { xml : "<xml>

\n"+
|
||||
"</xml>"
|
||||
|
||||
, expect :
|
||||
[ [ "opentag", { name: "xml", attributes: {} } ]
|
||||
, [ "text", "\r\r\n" ]
|
||||
, [ "closetag", "xml" ]
|
||||
]
|
||||
, strict : true
|
||||
, opt : {}
|
||||
}
|
||||
)
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// https://github.com/isaacs/sax-js/issues/47
|
||||
require(__dirname).test
|
||||
( { xml : '<a href="query.svc?x=1&y=2&z=3"/>'
|
||||
, expect : [
|
||||
[ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ],
|
||||
[ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ],
|
||||
[ "closetag", "a" ]
|
||||
]
|
||||
, strict : true
|
||||
, opt : {}
|
||||
}
|
||||
)
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// https://github.com/isaacs/sax-js/issues/49
|
||||
require(__dirname).test
|
||||
( { xml : "<xml><script>hello world</script></xml>"
|
||||
, expect :
|
||||
[ [ "opentag", { name: "xml", attributes: {} } ]
|
||||
, [ "opentag", { name: "script", attributes: {} } ]
|
||||
, [ "text", "hello world" ]
|
||||
, [ "closetag", "script" ]
|
||||
, [ "closetag", "xml" ]
|
||||
]
|
||||
, strict : false
|
||||
, opt : { lowercasetags: true, noscript: true }
|
||||
}
|
||||
)
|
||||
|
||||
require(__dirname).test
|
||||
( { xml : "<xml><script><![CDATA[hello world]]></script></xml>"
|
||||
, expect :
|
||||
[ [ "opentag", { name: "xml", attributes: {} } ]
|
||||
, [ "opentag", { name: "script", attributes: {} } ]
|
||||
, [ "opencdata", undefined ]
|
||||
, [ "cdata", "hello world" ]
|
||||
, [ "closecdata", undefined ]
|
||||
, [ "closetag", "script" ]
|
||||
, [ "closetag", "xml" ]
|
||||
]
|
||||
, strict : false
|
||||
, opt : { lowercasetags: true, noscript: true }
|
||||
}
|
||||
)
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
var sax = require("../lib/sax"),
|
||||
assert = require("assert")
|
||||
|
||||
function testPosition(chunks, expectedEvents) {
|
||||
var parser = sax.parser();
|
||||
expectedEvents.forEach(function(expectation) {
|
||||
parser['on' + expectation[0]] = function() {
|
||||
for (var prop in expectation[1]) {
|
||||
assert.equal(parser[prop], expectation[1][prop]);
|
||||
}
|
||||
}
|
||||
});
|
||||
chunks.forEach(function(chunk) {
|
||||
parser.write(chunk);
|
||||
});
|
||||
};
|
||||
|
||||
testPosition(['<div>abcdefgh</div>'],
|
||||
[ ['opentag', { position: 5, startTagPosition: 1 }]
|
||||
, ['text', { position: 19, startTagPosition: 14 }]
|
||||
, ['closetag', { position: 19, startTagPosition: 14 }]
|
||||
]);
|
||||
|
||||
testPosition(['<div>abcde','fgh</div>'],
|
||||
[ ['opentag', { position: 5, startTagPosition: 1 }]
|
||||
, ['text', { position: 19, startTagPosition: 14 }]
|
||||
, ['closetag', { position: 19, startTagPosition: 14 }]
|
||||
]);
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
require(__dirname).test({
|
||||
xml : "<html><head><script>if (1 < 0) { console.log('elo there'); }</script></head></html>",
|
||||
expect : [
|
||||
["opentag", {"name": "HTML","attributes": {}}],
|
||||
["opentag", {"name": "HEAD","attributes": {}}],
|
||||
["opentag", {"name": "SCRIPT","attributes": {}}],
|
||||
["script", "if (1 < 0) { console.log('elo there'); }"],
|
||||
["closetag", "SCRIPT"],
|
||||
["closetag", "HEAD"],
|
||||
["closetag", "HTML"]
|
||||
]
|
||||
});
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
|
||||
require(__dirname).test({
|
||||
xml :
|
||||
"<root>"+
|
||||
"<child>" +
|
||||
"<haha />" +
|
||||
"</child>" +
|
||||
"<monkey>" +
|
||||
"=(|)" +
|
||||
"</monkey>" +
|
||||
"</root>",
|
||||
expect : [
|
||||
["opentag", {
|
||||
"name": "root",
|
||||
"attributes": {}
|
||||
}],
|
||||
["opentag", {
|
||||
"name": "child",
|
||||
"attributes": {}
|
||||
}],
|
||||
["opentag", {
|
||||
"name": "haha",
|
||||
"attributes": {}
|
||||
}],
|
||||
["closetag", "haha"],
|
||||
["closetag", "child"],
|
||||
["opentag", {
|
||||
"name": "monkey",
|
||||
"attributes": {}
|
||||
}],
|
||||
["text", "=(|)"],
|
||||
["closetag", "monkey"],
|
||||
["closetag", "root"],
|
||||
["end"],
|
||||
["ready"]
|
||||
],
|
||||
strict : true,
|
||||
opt : {}
|
||||
});
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
|
||||
require(__dirname).test({
|
||||
xml :
|
||||
"<root>"+
|
||||
"<child>" +
|
||||
"<haha />" +
|
||||
"</child>" +
|
||||
"<monkey>" +
|
||||
"=(|)" +
|
||||
"</monkey>" +
|
||||
"</root>",
|
||||
expect : [
|
||||
["opentag", {
|
||||
"name": "ROOT",
|
||||
"attributes": {}
|
||||
}],
|
||||
["opentag", {
|
||||
"name": "CHILD",
|
||||
"attributes": {}
|
||||
}],
|
||||
["opentag", {
|
||||
"name": "HAHA",
|
||||
"attributes": {}
|
||||
}],
|
||||
["closetag", "HAHA"],
|
||||
["closetag", "CHILD"],
|
||||
["opentag", {
|
||||
"name": "MONKEY",
|
||||
"attributes": {}
|
||||
}],
|
||||
["text", "=(|)"],
|
||||
["closetag", "MONKEY"],
|
||||
["closetag", "ROOT"],
|
||||
["end"],
|
||||
["ready"]
|
||||
],
|
||||
strict : false,
|
||||
opt : {}
|
||||
});
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
|
||||
require(__dirname).test({
|
||||
xml :
|
||||
"<root> "+
|
||||
"<haha /> "+
|
||||
"<haha/> "+
|
||||
"<monkey> "+
|
||||
"=(|) "+
|
||||
"</monkey>"+
|
||||
"</root> ",
|
||||
expect : [
|
||||
["opentag", {name:"ROOT", attributes:{}}],
|
||||
["opentag", {name:"HAHA", attributes:{}}],
|
||||
["closetag", "HAHA"],
|
||||
["opentag", {name:"HAHA", attributes:{}}],
|
||||
["closetag", "HAHA"],
|
||||
// ["opentag", {name:"HAHA", attributes:{}}],
|
||||
// ["closetag", "HAHA"],
|
||||
["opentag", {name:"MONKEY", attributes:{}}],
|
||||
["text", "=(|)"],
|
||||
["closetag", "MONKEY"],
|
||||
["closetag", "ROOT"]
|
||||
],
|
||||
opt : { trim : true }
|
||||
});
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// stray ending tags should just be ignored in non-strict mode.
|
||||
// https://github.com/isaacs/sax-js/issues/32
|
||||
require(__dirname).test
|
||||
( { xml :
|
||||
"<a><b></c></b></a>"
|
||||
, expect :
|
||||
[ [ "opentag", { name: "A", attributes: {} } ]
|
||||
, [ "opentag", { name: "B", attributes: {} } ]
|
||||
, [ "text", "</c>" ]
|
||||
, [ "closetag", "B" ]
|
||||
, [ "closetag", "A" ]
|
||||
]
|
||||
, strict : false
|
||||
, opt : {}
|
||||
}
|
||||
)
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
|
||||
require(__dirname).test({
|
||||
xml : "<span>Welcome,</span> to monkey land",
|
||||
expect : [
|
||||
["opentag", {
|
||||
"name": "SPAN",
|
||||
"attributes": {}
|
||||
}],
|
||||
["text", "Welcome,"],
|
||||
["closetag", "SPAN"],
|
||||
["text", " to monkey land"],
|
||||
["end"],
|
||||
["ready"]
|
||||
],
|
||||
strict : false,
|
||||
opt : {}
|
||||
});
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// unquoted attributes should be ok in non-strict mode
|
||||
// https://github.com/isaacs/sax-js/issues/31
|
||||
require(__dirname).test
|
||||
( { xml :
|
||||
"<span class=test hello=world></span>"
|
||||
, expect :
|
||||
[ [ "attribute", { name: "class", value: "test" } ]
|
||||
, [ "attribute", { name: "hello", value: "world" } ]
|
||||
, [ "opentag", { name: "SPAN",
|
||||
attributes: { class: "test", hello: "world" } } ]
|
||||
, [ "closetag", "SPAN" ]
|
||||
]
|
||||
, strict : false
|
||||
, opt : {}
|
||||
}
|
||||
)
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
var t = require(__dirname)
|
||||
|
||||
, xmls = // should be the same both ways.
|
||||
[ "<parent xmlns:a='http://ATTRIBUTE' a:attr='value' />"
|
||||
, "<parent a:attr='value' xmlns:a='http://ATTRIBUTE' />" ]
|
||||
|
||||
, ex1 =
|
||||
[ [ "opennamespace"
|
||||
, { prefix: "a"
|
||||
, uri: "http://ATTRIBUTE"
|
||||
}
|
||||
]
|
||||
, [ "attribute"
|
||||
, { name: "xmlns:a"
|
||||
, value: "http://ATTRIBUTE"
|
||||
, prefix: "xmlns"
|
||||
, local: "a"
|
||||
, uri: "http://www.w3.org/2000/xmlns/"
|
||||
}
|
||||
]
|
||||
, [ "attribute"
|
||||
, { name: "a:attr"
|
||||
, local: "attr"
|
||||
, prefix: "a"
|
||||
, uri: "http://ATTRIBUTE"
|
||||
, value: "value"
|
||||
}
|
||||
]
|
||||
, [ "opentag"
|
||||
, { name: "parent"
|
||||
, uri: ""
|
||||
, prefix: ""
|
||||
, local: "parent"
|
||||
, attributes:
|
||||
{ "a:attr":
|
||||
{ name: "a:attr"
|
||||
, local: "attr"
|
||||
, prefix: "a"
|
||||
, uri: "http://ATTRIBUTE"
|
||||
, value: "value"
|
||||
}
|
||||
, "xmlns:a":
|
||||
{ name: "xmlns:a"
|
||||
, local: "a"
|
||||
, prefix: "xmlns"
|
||||
, uri: "http://www.w3.org/2000/xmlns/"
|
||||
, value: "http://ATTRIBUTE"
|
||||
}
|
||||
}
|
||||
, ns: {"a": "http://ATTRIBUTE"}
|
||||
}
|
||||
]
|
||||
, ["closetag", "parent"]
|
||||
, ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }]
|
||||
]
|
||||
|
||||
// swap the order of elements 2 and 1
|
||||
, ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3))
|
||||
, expected = [ex1, ex2]
|
||||
|
||||
xmls.forEach(function (x, i) {
|
||||
t.test({ xml: x
|
||||
, expect: expected[i]
|
||||
, strict: true
|
||||
, opt: { xmlns: true }
|
||||
})
|
||||
})
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
|
||||
require(__dirname).test
|
||||
( { xml :
|
||||
"<root xmlns:x='x1' xmlns:y='y1' x:a='x1' y:a='y1'>"+
|
||||
"<rebind xmlns:x='x2'>"+
|
||||
"<check x:a='x2' y:a='y1'/>"+
|
||||
"</rebind>"+
|
||||
"<check x:a='x1' y:a='y1'/>"+
|
||||
"</root>"
|
||||
|
||||
, expect :
|
||||
[ [ "opennamespace", { prefix: "x", uri: "x1" } ]
|
||||
, [ "opennamespace", { prefix: "y", uri: "y1" } ]
|
||||
, [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
|
||||
, [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ]
|
||||
, [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
|
||||
, [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
|
||||
, [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
|
||||
attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" }
|
||||
, "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" }
|
||||
, "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
|
||||
, "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
|
||||
ns: { x: 'x1', y: 'y1' } } ]
|
||||
|
||||
, [ "opennamespace", { prefix: "x", uri: "x2" } ]
|
||||
, [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
|
||||
, [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind",
|
||||
attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } },
|
||||
ns: { x: 'x2' } } ]
|
||||
|
||||
, [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ]
|
||||
, [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
|
||||
, [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
|
||||
attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" }
|
||||
, "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
|
||||
ns: { x: 'x2' } } ]
|
||||
|
||||
, [ "closetag", "check" ]
|
||||
|
||||
, [ "closetag", "rebind" ]
|
||||
, [ "closenamespace", { prefix: "x", uri: "x2" } ]
|
||||
|
||||
, [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
|
||||
, [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
|
||||
, [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
|
||||
attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
|
||||
, "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
|
||||
ns: { x: 'x1', y: 'y1' } } ]
|
||||
, [ "closetag", "check" ]
|
||||
|
||||
, [ "closetag", "root" ]
|
||||
, [ "closenamespace", { prefix: "x", uri: "x1" } ]
|
||||
, [ "closenamespace", { prefix: "y", uri: "y1" } ]
|
||||
]
|
||||
, strict : true
|
||||
, opt : { xmlns: true }
|
||||
}
|
||||
)
|
||||
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
|
||||
require(__dirname).test
|
||||
( { xml :
|
||||
"<root>"+
|
||||
"<plain attr='normal'/>"+
|
||||
"<ns1 xmlns='uri:default'>"+
|
||||
"<plain attr='normal'/>"+
|
||||
"</ns1>"+
|
||||
"<ns2 xmlns:a='uri:nsa'>"+
|
||||
"<plain attr='normal'/>"+
|
||||
"<a:ns a:attr='namespaced'/>"+
|
||||
"</ns2>"+
|
||||
"</root>"
|
||||
|
||||
, expect :
|
||||
[ [ "opentag", { name: "root", prefix: "", local: "root", uri: "",
|
||||
attributes: {}, ns: {} } ]
|
||||
|
||||
, [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
|
||||
, [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
|
||||
attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } },
|
||||
ns: {} } ]
|
||||
, [ "closetag", "plain" ]
|
||||
|
||||
, [ "opennamespace", { prefix: "", uri: "uri:default" } ]
|
||||
|
||||
, [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ]
|
||||
, [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default",
|
||||
attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } },
|
||||
ns: { "": "uri:default" } } ]
|
||||
|
||||
, [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ]
|
||||
, [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' },
|
||||
attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ]
|
||||
, [ "closetag", "plain" ]
|
||||
|
||||
, [ "closetag", "ns1" ]
|
||||
|
||||
, [ "closenamespace", { prefix: "", uri: "uri:default" } ]
|
||||
|
||||
, [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ]
|
||||
|
||||
, [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ]
|
||||
|
||||
, [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "",
|
||||
attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } },
|
||||
ns: { a: "uri:nsa" } } ]
|
||||
|
||||
, [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
|
||||
, [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
|
||||
attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } },
|
||||
ns: { a: 'uri:nsa' } } ]
|
||||
, [ "closetag", "plain" ]
|
||||
|
||||
, [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ]
|
||||
, [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa",
|
||||
attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } },
|
||||
ns: { a: 'uri:nsa' } } ]
|
||||
, [ "closetag", "a:ns" ]
|
||||
|
||||
, [ "closetag", "ns2" ]
|
||||
|
||||
, [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ]
|
||||
|
||||
, [ "closetag", "root" ]
|
||||
]
|
||||
, strict : true
|
||||
, opt : { xmlns: true }
|
||||
}
|
||||
)
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
|
||||
require(__dirname).test(
|
||||
{ strict : true
|
||||
, opt : { xmlns: true }
|
||||
, expect :
|
||||
[ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"]
|
||||
|
||||
, [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ]
|
||||
, [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
|
||||
attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } },
|
||||
ns: {} } ]
|
||||
, [ "closetag", "root" ]
|
||||
]
|
||||
}
|
||||
).write("<root unbound:attr='value'/>")
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
require(__dirname).test(
|
||||
{ xml : "<root xml:lang='en'/>"
|
||||
, expect :
|
||||
[ [ "attribute"
|
||||
, { name: "xml:lang"
|
||||
, local: "lang"
|
||||
, prefix: "xml"
|
||||
, uri: "http://www.w3.org/XML/1998/namespace"
|
||||
, value: "en"
|
||||
}
|
||||
]
|
||||
, [ "opentag"
|
||||
, { name: "root"
|
||||
, uri: ""
|
||||
, prefix: ""
|
||||
, local: "root"
|
||||
, attributes:
|
||||
{ "xml:lang":
|
||||
{ name: "xml:lang"
|
||||
, local: "lang"
|
||||
, prefix: "xml"
|
||||
, uri: "http://www.w3.org/XML/1998/namespace"
|
||||
, value: "en"
|
||||
}
|
||||
}
|
||||
, ns: {}
|
||||
}
|
||||
]
|
||||
, ["closetag", "root"]
|
||||
]
|
||||
, strict : true
|
||||
, opt : { xmlns: true }
|
||||
}
|
||||
)
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
require(__dirname).test(
|
||||
{ xml : "<xml:root/>"
|
||||
, expect :
|
||||
[
|
||||
[ "opentag"
|
||||
, { name: "xml:root"
|
||||
, uri: "http://www.w3.org/XML/1998/namespace"
|
||||
, prefix: "xml"
|
||||
, local: "root"
|
||||
, attributes: {}
|
||||
, ns: {}
|
||||
}
|
||||
]
|
||||
, ["closetag", "xml:root"]
|
||||
]
|
||||
, strict : true
|
||||
, opt : { xmlns: true }
|
||||
}
|
||||
)
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
require(__dirname).test(
|
||||
{ xml : "<xml:root xmlns:xml='ERROR'/>"
|
||||
, expect :
|
||||
[ ["error"
|
||||
, "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n"
|
||||
+ "Actual: ERROR\n"
|
||||
+ "Line: 0\nColumn: 27\nChar: '"
|
||||
]
|
||||
, [ "attribute"
|
||||
, { name: "xmlns:xml"
|
||||
, local: "xml"
|
||||
, prefix: "xmlns"
|
||||
, uri: "http://www.w3.org/2000/xmlns/"
|
||||
, value: "ERROR"
|
||||
}
|
||||
]
|
||||
, [ "opentag"
|
||||
, { name: "xml:root"
|
||||
, uri: "http://www.w3.org/XML/1998/namespace"
|
||||
, prefix: "xml"
|
||||
, local: "root"
|
||||
, attributes:
|
||||
{ "xmlns:xml":
|
||||
{ name: "xmlns:xml"
|
||||
, local: "xml"
|
||||
, prefix: "xmlns"
|
||||
, uri: "http://www.w3.org/2000/xmlns/"
|
||||
, value: "ERROR"
|
||||
}
|
||||
}
|
||||
, ns: {}
|
||||
}
|
||||
]
|
||||
, ["closetag", "xml:root"]
|
||||
]
|
||||
, strict : true
|
||||
, opt : { xmlns: true }
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user