This article needs a technical review. How you can help.
The Element.namespaceURI
(or Node.namespaceURI, as currently implemented in Gecko) read-only property returns the namespace URI of the element/node, or null
if the node is not in a namespace (read-only). When the node is a document, it returns the XML namespace for the current document.
Though recent specifications require namespaceURI
to be defined on the Element
interface, Gecko-based browsers still implement it on the Node
interface.
Syntax
namespace = node.namespaceURI
Example
In this snippet, a node is being examined for its localName and its namespaceURI
. If the namespaceURI
returns the XUL namespace and the localName
returns "browser", then the node is understood to be an XUL <browser/>
.
if (node.localName == "browser" && node.namespaceURI == "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul") { // this is a XUL browser }
Notes
This is not a computed value that is the result of a namespace lookup based on an examination of the namespace declarations in scope. The namespace URI of a node is frozen at the node creation time.
In Firefox 3.5 and earlier, the namespace URI for HTML elements in HTML documents is null
. In later versions, in compliance with HTML5, it is http://www.w3.org/1999/xhtml
as in XHTML.
For nodes of any nodeType other than ELEMENT_NODE
and ATTRIBUTE_NODE
the value of namespaceURI
is always null
.
You can create an element with the specified namespaceURI
using the DOM Level 2 method document.createElementNS.
Per the Namespaces in XML specification, an attribute does not inherit its namespace from the element it is attached to. If an attribute is not explicitly given a namespace, it has no namespace.
The DOM does not handle or enforce namespace validation per se. It is up to the DOM application to do any validation necessary. Note too that the namespace prefix, once it is associated with a particular node, cannot be changed.
Node.namespaceURI
was removed from Chrome as of version 46.