The xml attribute prefix (for example, xml:lang) is fairly well-known, but Mozilla's lookupNamespaceURI method doesn't know about it. Thus, to call aNode.lookupNamespaceURI("xml") would require that we explicitly declare the XML namespace. We have a similar problem with aNode.lookupNamespaceURI("xmlns"). These are namespaces that are not going to change, and our DOM code shouldn't have to walk up the tree of nodes to find the right values... :)
This is a performance enhancement, right? Since "xmlns" and "xml" don't have associated namespace URIs (due to the fact that they are not actually namespaces)....
They do have associated namespace URIs. xml http://www.w3.org/XML/1998/namespace xmlns http://www.w3.org/2000/xmlns/ See: http://www.w3.org/TR/xml-names11/#xmlReserved
Note that the lookup algorithm is specified in http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/namespaces-algorithms.html#lookupNamespaceURIAlgo That said, I never understood why that doesn't special-case xml and xmlns. DOM Level 3 XPath ended up special-casing xml: http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html#XPathEvaluator-createNSResolver
fixed with checkin by timeless