Returns a map from prefixes to namespace URIs giving the in-scope namespace bindings for a given element node.

in-scope-namespaces($node as node()) ➔ map(xs:string, xs:string)





The input element


map(xs:string, xs:string)


Saxon availability

Requires Saxon-PE or Saxon-EE. Implemented since Saxon 10.

Notes on the Saxon implementation

Available since Saxon 10. Changed in Saxon 12 to align with the proposed XPath 4.0 function fn:in-scope-namespaces(): the returned map now always includes an entry for the XML namespace.


If the supplied node is not an element, the function returns the empty sequence.

In other cases it returns a map from namespace prefixes to namespace URIs, giving all the in-scope namespace bindings for the element. This is a more efficient way to obtain this information than either the use of the namespace axis, or the XPath 2.0 functions in-scope-prefixes and namespace-uri-for-prefix.

The map includes the default namespace, if there is a binding for the default namespace: the relevant entry in the map will have a key that is the zero-length string. The map always (from Saxon 12) includes the implicit binding of the "xml" namespace to the namespace URI