次のコード
var ns1 = 'hello:world1',
doc = document.implementation.createDocument('nsdoc', 'doc', null),
outer = doc.createElement('outer'),
s = new XMLSerializer(),
elm;
outer.setAttribute('xmlns:ns1', ns1);
elm = doc.createElementNS(ns1, 'Inner');
outer.appendChild(elm);
console.log(s.serializeToString(outer));
chrome と firefox で次の xml ドキュメントを出力します。
<outer xmlns:ns1="hello:world1">
<Inner xmlns="hello:world1"/>
</outer>
これは技術的にはまだ有効ですが、重複したns宣言を削除する方法はありますか? たとえば、ドキュメントは次のように表示されることが望ましいでしょう。
<outer xmlns:ns1="hello:world1">
<ns1:Inner/>
</outer>