Tested with WebKit-SVN-r25455.
setAttributeNS takes a string for the first argument. Therefore, if you want to put an attribute in the null namespace, you would use "".
This works fine in Opera and Firefox (so does null), but webkit requires null.
If you do setAttributeNS("", "type", "application/x-unrecognized") on an object element and append it to the document, if the object has fallback content, it won't be shown unless you use null instead.
Created attachment 16246 [details]
From DOM3Core: "Applications should use the value null as the namespaceURI parameter for methods if they wish to have no namespace. In programming languages where empty strings can be differentiated from null, empty strings, when given as a namespace URI, are converted to null." Also: "applications must use the value null as the namespaceURI parameter for methods if they wish to have no namespace."
So, while null is the preferred form, both null and empty string should work.
Created attachment 16943 [details]
This affects createElementNS also and probably other ns functions.
createElementNS("", "div") should do the exact same thing as createElementNS(null, "div"), but it doesn't in Safari. Works fine in Opera and FF.
Fixed with bug 24548 in <http://trac.webkit.org/changeset/41700>.