Node: lookupNamespaceURI() method

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

The lookupNamespaceURI() method of the Node interface takes a prefix as parameter and returns the namespace URI associated with it on the given node if found (and null if not). This method's existence allows Node objects to be passed as a namespace resolver to XPathEvaluator.createExpression() and XPathEvaluator.evaluate().

Syntax

js
lookupNamespaceURI(prefix)

Parameters

prefix

The prefix to look for.

Note: This parameter is not optional, but can be set to null.

Return value

A string containing the namespace URI corresponding to the prefix.

  • Always returns null if the node is a DocumentFragment, DocumentType, Document with no documentElement, or Attr with no associated element.
  • If prefix is "xml", the return value is always "http://www.w3.org/XML/1998/namespace".
  • If prefix is "xmlns", the return value is always "http://www.w3.org/2000/xmlns/".
  • If the prefix is null, the return value is the default namespace URI.
  • If the prefix is not found, the return value is null.

Example

html
<div style="display: none">
  <div>Test HTML element</div>
  <svg>
    <text>Test SVG element</text>
  </svg>
  <math>Test MathML element</math>
</div>

<table>
  <thead>
    <tr>
      <th><code>prefix</code></th>
      <th><code>&lt;div&gt;</code></th>
      <th><code>&lt;svg&gt;</code></th>
      <th><code>&lt;math&gt;</code></th>
    </tr>
  </thead>
  <tbody></tbody>
</table>
js
const htmlElt = document.querySelector("div");
const svgElt = document.querySelector("svg");
const mathElt = document.querySelector("math");

const tbody = document.querySelector("tbody");

for (const prefix of ["xmlns", "xml", "html", "svg", "xlink", "", null]) {
  const row = document.createElement("tr");
  tbody.appendChild(row);
  row.appendChild(document.createElement("td")).textContent =
    JSON.stringify(prefix);
  for (const el of [htmlElt, svgElt, mathElt]) {
    console.log(el, prefix, el.lookupNamespaceURI(prefix));
    row.appendChild(document.createElement("td")).textContent = String(
      el.lookupNamespaceURI(prefix),
    );
  }
}

Specifications

Specification
DOM Standard
# dom-node-lookupnamespaceuri

Browser compatibility

BCD tables only load in the browser

See also