var t = require(__dirname) , xmls = // should be the same both ways. [ "" , "" ] , 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 } }) })