E4Xのデフォルトnamespaceが...
var xml = <box xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <label value="hogehoge"/> <div xmlns="http://www.w3.org/1999/xhtml"> <p>abc</p> </div> </box>; xml.toXMLString() /* <box xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <label value="hogehoge"/> <div xmlns="http://www.w3.org/1999/xhtml"> <p>abc</p> </div> </box> */ xml.*[1].toXMLString() /* <div xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <p>abc</p> </div> */
なことになるんだけど、バグですかね?(デフォルトの名前空間が複数になっている)
まぁ、実際の名前空間はhttp://www.w3.org/1999/xhtml
になっているみたいだけど。
あと、途中で名前空間を別にすると
var ns = new Namespace("xhtml","http://www.w3.org/1999/xhtml"); xml.ns::div.toXMLString()
と、名前空間のオブジェクト作ってアクセスしないといけないのは面倒だなぁ。