Node 的变化 在 DOM2 中,Node 类型包含以下特定于命名空间的属性:

 namespaceURI,节点的命名空间 URL,如果未指定则为 null;
 prefix,命名空间前缀,如果未指定则为 null。

在节点使用命名空间前缀的情况下,nodeName 等于 prefix + ":" + localName。比如下面这个例子:

<head> 
 <title>Example XHTML page</title> 
 </head> 
 <body> 
 <s:svg xmlns:s="http://www.w3.org/2000/svg" version="1.1" 
 viewBox="0 0 100 100" style="width:100%; height:100%"> 
 <s:rect x="0" y="0" width="100" height="100" style="fill:red" /> 
 </s:svg> 
 </body> 
</html>

其中的元素的 localName 和 tagName 都是"html",namespaceURL 是"http://www.w3. org/1999/xhtml",而 prefix 是 null。对于<s:svg>元素,localName 是"svg",tagName 是"s:svg",namespaceURI是"https://www.w3.org/2000/svg",而 prefix 是"s"。 DOM3 进一步增加了如下与命名空间相关的方法:

 lookupNamespaceURI(prefix),返回给定 prefix 的命名空间 URI;
 lookupPrefix(namespaceURI),返回给定 namespaceURI 的前缀。

对前面的例子,可以执行以下代码:

xhtml")); // true 
// 假设 svg 包含对<s:svg>元素的引用
console.log(svg.lookupPrefix("http://www.w3.org/2000/svg")); // "s" 
console.log(svg.lookupNamespaceURI("s")); // "http://www.w3.org/2000/svg"

这些方法主要用于通过元素查询前面和命名空间 URI,以确定元素与文档的关系。 Document 的变化 DOM2 在 Document 类型上新增了如下命名空间特定的方法:

间 namespaceURI 的一个新元素;
 createAttributeNS(namespaceURI, attributeName),以给定的属性名 attributeName
创建指定命名空间 namespaceURI 的一个新属性;
 getElementsByTagNameNS(namespaceURI, tagName),返回指定命名空间 namespaceURI
中所有标签名为 tagName 的元素的 NodeList。

使用这些方法都需要传入相应的命名空间 URI(不是命名空间前缀),如下面的例子所示:

let ksvg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); 
// 创建一个任意命名空间的新属性
let att = document.createAttributeNS("http://www.somewhere.com", "random"); 
// 获取所有 XHTML 元素
let elems = document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "*");

这些命名空间特定的方法只在文档中包含两个或两个以上命名空间时才有用。 .Element 的变化 DOM2 Core 对 Element 类型的更新主要集中在对属性的操作上。下面是新增的方法:

localName 的属性;
 getAttributeNodeNS(namespaceURI, localName),取得指定命名空间 namespaceURI 中
名为 localName 的属性节点;
 getElementsByTagNameNS(namespaceURI, tagName),取得指定命名空间 namespaceURI
中标签名为 tagName 的元素的 NodeList;
 hasAttributeNS(namespaceURI, localName),返回布尔值,表示元素中是否有命名空间
namespaceURI 下名为 localName 的属性(注意,DOM2 Core 也添加不带命名空间的
hasAttribute()方法);
 removeAttributeNS(namespaceURI, localName),删除指定命名空间 namespaceURI 中名为 localName 的属性;
 setAttributeNS(namespaceURI, qualifiedName, value),设置指定命名空间 namespaceURI
中名为 qualifiedName 的属性为 value;
 setAttributeNodeNS(attNode),为元素设置(添加)包含命名空间信息的属性节点 attNode。

这些方法与 DOM1 中对应的方法行为相同,除 setAttributeNodeNS()之外都只是多了一个命名 空间参数。 NamedNodeMap 的变化 NamedNodeMap 也增加了以下处理命名空间的方法。因为 NamedNodeMap 主要表示属性,所以这 些方法大都适用于属性:

localName 的项;
 removeNamedItemNS(namespaceURI, localName),删除指定命名空间 namespaceURI 中
名为 localName 的项;
 setNamedItemNS(node),为元素设置(添加)包含命名空间信息的节点。

这些方法很少使用,因为通常都是使用元素来访问属性。