以下代码
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 声明,或者是否有更好的 api 用于在父节点上设置命名空间以供子节点使用?例如,文档最好如下所示:
<outer xmlns:ns1="hello:world1">
<ns1:Inner/>
</outer>