Alexey Proskuryakov wrote:
This is actually a difference in createElementNS(null, "p") vs.
createElementNS("", "p") behavior. I don't know whose bug it is, but in
Firefox and Opera, empty and null namespace arguments both result in
null namespace for the created element.
Interesting question. DOM 2 Core has this to say (section 1.1.8, XML
Namespaces):
Note that because the DOM does no lexical checking, the empty
string will be treated as a real namespace URI in DOM Level 2
methods. Applications must use the value null as the namespaceURI
parameter for methods if they wish to have no namespace.
But DOM 3 Core (which I would assume supercedes that) says (section
1.3.3, XML Namespaces):
In programming languages where empty strings can be differentiated
from null, empty strings, when given as a namespace URI, are
converted to null. This is true even though the DOM does no lexical
checking of URIs.
At the same time, the DOM 3 Core definition of createElementNS says:
Per [XML Namespaces], applications must use the value null as the
namespaceURI parameter for methods if they wish to have no
namespace.
Make of this what you will. But as I recall, the change in the "XML
Namespaces" section was meant precisely to ensure that in JS passing ""
for all namespace URIs would work exactly like passing null.
Sounds like webkit either implements createElementNS per DOM Core 2 or
has a buggy DOM Core 3 impl.
In either case, the test should probably pass null, not "".
-Boris