<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:foo="http://foo.com" xmlns:bar="http://bar.com" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>XMLSerializer() namespace test</title> <script> window.addEventListener("load", function() { if (window.testRunner) testRunner.dumpAsText(); var xs = new XMLSerializer(); var content = document.getElementById('content'); content.firstChild.nodeValue = xs.serializeToString(document.getElementById('input')); // Original test var d = document.implementation.createDocument("urn:foo-ns", "foo:root", null); if (!d.documentElement) { // This shouldn't happen, since DomImplementation.createDocument // is supposed to create the root element. But in Safari, it's required. d.appendChild(d.createElementNS("urn:foo-ns", "foo:root")); } var root = d.documentElement; root.setAttributeNS("urn:foo-ns", "foo:type", "test") var c = d.createElementNS(null, "child"); root.appendChild(c); c.setAttributeNS("urn:foo-ns", "foo:name", "one"); c.setAttributeNS("urn:bar-ns", "bar:name", "two"); var attr = d.createAttributeNS(null, "name"); attr.value = "three"; c.setAttributeNode(attr); window.alert("foo:name is " + c.getAttributeNS("urn:foo-ns", "name") + " and should be one"); window.alert("bar:name is " + c.getAttributeNS("urn:bar-ns", "name") + " and should be two"); window.alert("name is " + c.getAttributeNS(null, "name") + " and should be three"); window.alert("node is " + d.getElementsByTagNameNS(null, "child").item(0).nodeName + " and should be child"); window.alert(xs.serializeToString(d)); }, false); </script> </head> <body> <pre id="content">foo</pre> <div id="input"> <div> <foo:node xmlns="http://baz.com" foo:name="foo_name" bar:name="bar_name"> <node foo:name="foo_name"> <bar:node xmlns:bar="http://bar2.com"/> </node> </foo:node> </div> <bar:node> <br /> </bar:node> </div> </body> </html>