Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Namespaces

E4X 与 命令空间

通常情况下,XML 文档包含来自多种命令空间的元素。你可以通过声明为你的 E4X 对象设置默认的命名空间。

default xml namespace = "https://www.w3.org/1999/xhtml";

通过重复的声明,你可以随时更改相同范围内 E4X 的命名空间。

default xml namespace = "https://www.w3.org/1999/xhtml";
var a = <p>Some text</p>;
default xml namespace = "https://www.mozilla.org/keymaster/gat...re.is.only.xul";
var b = <label>More text</label>;
a.appendChild(b);

得出

<p xmlns="https://www.w3.org/1999/xhtml">
  Some text
  <label xmlns="https://www.mozilla.org/keymaster/gat...re.is.only.xul">More text</label>
</p>

name()

在 XML 对象上调用 name() 会返回一个 QName 对象(Qualified Name)。QName 在支持 E4X 的 JavaScript 实现中是一个全局的构造函数。QName 对象有两个特别重要的属性:localName 返回元素的名字,且没有任何命名空间前缀;uri 返回元素所在的命名空间。

var info = a.name();
info.localName; // returns 'p'.
info.uri; // returns "https://www.w3.org/1999/xhtml"

没有在任何命令空间的元素,他们的 uri 是一个空字符串。

Namespace 全局构造函数和 QName 非常相似。Namespace 的不同之处是 toString 方法,以及 Namespace 用 prefix 属性来代替 localName 属性[1]

关于 E4X 的命名空间,更多的内容请参见 Processing XML with E4X

译者注

  1. 原文中没有详细讲,获得 Namespace 对象的方法是调用 .namespace()。其中 QName 的 toString 方法会输出 Namespace::name 的形式,而 Namespace 的 toString 只会输出命名空间。

文档标签和贡献者

 此页面的贡献者: ziyunfei, redraiment
 最后编辑者: ziyunfei,