diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/zh-cn/archive/web/e4x_tutorial | |
parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/zh-cn/archive/web/e4x_tutorial')
6 files changed, 0 insertions, 329 deletions
diff --git a/files/zh-cn/archive/web/e4x_tutorial/accessing_xml_children/index.html b/files/zh-cn/archive/web/e4x_tutorial/accessing_xml_children/index.html deleted file mode 100644 index 16b4cf8139..0000000000 --- a/files/zh-cn/archive/web/e4x_tutorial/accessing_xml_children/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Accessing XML children -slug: Archive/Web/E4X_tutorial/Accessing_XML_children -translation_of: Archive/Web/E4X_tutorial/Accessing_XML_children ---- -<h2 id="访问_XML_子节点">访问 XML 子节点</h2> -<p>JavaScript 对象通常使用 . 或 [] 来设置性质。</p> -<pre class="brush: js">var a = {}; -a.foo = 1; -a["bar"] = 2;</pre> -<p>在 E4X 中,点(.)和中括号([])操作符用来访问 E4X 元素的子节点。</p> -<pre class="brush: js">var element1 = <foo> - <bar/> - </foo>; -var element2 = <baz/>; -element1.bar.appendChild(element2); -element1["bar"].appendChild(<quux/>);</pre> -<p>往 element1 中的 bar 节点添加子节点,生成如下 XML 文档:</p> -<p><code><foo><br> - <bar><br> - <baz/><br> - <quux/><br> - </bar><br> - </foo></code></p> -<p>但是要注意,给一个不存在的子元素赋值会创建这个元素。</p> -<pre class="brush: js">var element1 = <foo/> -element1.bar = 1;</pre> -<p>生成</p> -<p><code><foo><br> - <bar>1</bar><br> - </foo></code></p> -<p>如果子节点已经存在,点(.)操作符允许你更改它的值。</p> -<pre class="brush: js">var elem = <foo> - <bar>1</bar> - </foo> -elem.bar = 2;</pre> -<p>会将原来的值 1 改成 2。</p> -<p>你可以用 delete 命令删除一个子节点。</p> -<pre class="brush: js">var elem = <foo> - <bar/> - <baz/> - </foo> -delete elem.bar;</pre> -<p>只剩下</p> -<p><code><foo><br> - <baz/><br> - </foo></code></p> -<p>点(.)操作符还能用于替换特定的子节点。</p> -<pre class="brush: js">var elem1 = <foo> - <bar/> - </foo>; -var elem2 = <red> - <blue/> - </red>; -elem1.bar = elem2;</pre> -<p>用 elem2 的全部内容替换 <bar/> 元素。</p> -<p><code><foo><br> - <red><br> - <blue/><br> - </red><br> - <foo></code></p> -<h2 id="XML_列表">XML 列表</h2> -<p>许多时候,一个元素会有两个或多个相同类型的子节点。在这种情况下,访问 foo.bar 将返回一个XML 列表对象,包含所有类型为“bar”的子节点。注意:在使用 . 操作符时,判断它是返回单个元素还是一个 XML 列表,这是你的责任。在返回这些性质时,E4X 的行为并没有区别。</p> -<p>XML 列表的行为就像是一个数组。</p> -<pre class="brush: js">var element = <foo> - <bar baz="1">red</bar> - <bar baz="2">blue</bar> - </foo>; -var list = element.bar; -list.length(); // returns 2 -list[0]; // the first bar element -list[1]; // the second bar element -</pre> -<p>需要注意,这个列表时可修改的,在它上面做的修改都会反映到原始的 XML 文档中。</p> -<pre class="brush: js">list[1] = "green";</pre> -<p>XML 文档被修改为:</p> -<p><code><foo><br> - <bar baz="1">red</bar><br> - <bar baz="2">green</bar><br> - </foo></code></p> -<h2 id="特殊类型的节点">特殊类型的节点</h2> -<p>XML 对象有一些方法可以访问 XML 列表中的通用类型节点。</p> -<pre class="brush: js">var a = <foo> Some text <bar>not text</bar> More text </foo>; -var list = a.text(); -list.length(); // returns 2 -list[0]; // returns " Some text " -list[1]; // returns " More text "</pre> -<p>你同样可以访问注释节点:</p> -<pre class="brush: js">XML.ignoreComments = false; -var a = <foo> Some <!-- abc --> text </foo>; -var comments = a.comments(); -alert(comments[0]); // Returns <!-- abc --></pre> -<p>星号(*)选择器将返回 XML 列表的所有子节点。</p> -<pre class="brush: js">var a = <foo> - <bar/> - <baz/> - </foo>; -var list = a.*; -list.length(); // returns 2 -</pre> -<p>元素属性</p> -<p>很多 XML 元素都有赋有特定值的属性。例如:</p> -<p><code><pets><br> - <dog color="brown">Fido</dog><br> - <cat color="grey">Fluffy</cat><br> - </pets></code></p> -<p>E4X 运行你用 .@ 操作符来反问这些特定元素的属性。最基本的情况如下例所示:</p> -<pre class="brush: js"> var element = <foo bar="1"/> - element.@bar = 2;</pre> -<p>它将生成:</p> -<p><code><foo bar="2"/></code></p> diff --git a/files/zh-cn/archive/web/e4x_tutorial/descendants_and_filters/index.html b/files/zh-cn/archive/web/e4x_tutorial/descendants_and_filters/index.html deleted file mode 100644 index fbf89a871f..0000000000 --- a/files/zh-cn/archive/web/e4x_tutorial/descendants_and_filters/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Descendants and Filters -slug: Archive/Web/E4X_tutorial/Descendants_and_Filters -translation_of: Archive/Web/E4X_tutorial/Descendants_and_Filters ---- -<h2 id="访问后代节点">访问后代节点</h2> -<p>很多时候,你感兴趣的节点往往不是 XML 根节点的子节点,而是嵌套在多层下的后代节点。你可以使用 .. 操作符访问任意深度的节点,或者使用 descendants 性质。例如:</p> -<pre class="brush: js">var element = <pets> - <dogs> - <fido color="red"/> - <spike color="blue"/> - </dogs> - </pets>; -element..fido.@color = "green"; -element..spike.@color = "purple"; -</pre> -<p>两只宠物狗的颜色都做了改变。</p> -<p>点(.)操作符的所有规则都适用于 .. 操作符。那就是说,如果有多个请求的类型,就会返回一个 XML 后代的列表。星号(*)选择器会返回 XML 列表的所有后代。</p> -<h2 id="过滤器">过滤器</h2> -<p>在很多情况下,尤其是用 * 选择器时,你并不想要处理 . 或 .. 操作符返回的所有节点。为了只处理其中特定的子集,可以将筛选条件放到 . 操作符后面的圆括号里。</p> -<pre class="brush: js">var element = <dogs> - <fido color="brown"/> - <spike color="black"/> - <killer color="brown"/> - </dogs>; -var list = element.*.(@color == "brown");</pre> -<p>本来,element.* 返回一个包含三只狗的列表。但其中只有 fido 和 killer 的颜色是褐色的。因此,该过来条件创建了一个只包含 fido 和 killer 的列表。</p> diff --git a/files/zh-cn/archive/web/e4x_tutorial/index.html b/files/zh-cn/archive/web/e4x_tutorial/index.html deleted file mode 100644 index 4dac9ce0e8..0000000000 --- a/files/zh-cn/archive/web/e4x_tutorial/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: E4X教程 -slug: Archive/Web/E4X_tutorial -translation_of: Archive/Web/E4X_tutorial ---- -<p></p><div class="prevnext" style="text-align: right;"> - <p><a href="/zh-CN/docs/cn/E4X_Tutorial/Introduction">下一页 »</a></p> -</div><p></p> - -<div class="warning"> -<p>警告:E4X已废弃。 默认情况下,Firefox 16中的内容将禁用它,Firefox 17中的Chrome默认禁用,Firefox 18中将其删除。请使用DOMParser / DOMSerializer或非本机JXON算法。</p> -</div> - -<h2 id="Overview" name="Overview">概述</h2> - -<p>本教程带你走入<strong>E4X (EcmaScript for XML)基本语法</strong>. 通过使用E4X,程序员可以通过一个类似JavaScript编程的语法来操作XML文档。</p> - -<h2 id="Subjects" name="Subjects">科目</h2> - -<ul> - <li><a href="/cn/E4X_Tutorial/Introduction" title="cn/E4X Tutorial/Introduction">简介</a></li> - <li><a href="/cn/E4X_Tutorial/Accessing_XML_children" title="cn/E4X_Tutorial/Accessing_XML_children">访问XML子节点</a></li> - <li><a href="/cn/E4X_Tutorial/Descendants_and_Filters" title="cn/E4X_Tutorial/Descendants_and_Filters">子孙和过滤器</a></li> - <li><a href="/cn/E4X_Tutorial/Namespaces" title="cn/E4X Tutorial/Namespaces">命名空间</a></li> - <li><a href="/cn/E4X_Tutorial/The_global_XML_object" title="cn/E4X_Tutorial/The_global_XML_object">全局XML对象</a></li> -</ul> - -<h2 id="See_also" name="See_also">另请参阅</h2> - -<ul> - <li><a href="/cn/E4X" title="cn/E4X">E4X</a></li> - <li><a href="/cn/E4X/Processing_XML_with_E4X" title="cn/E4X/Processing_XML_with_E4X">使用E4X处理XML</a></li> -</ul> - -<p></p><div class="prevnext" style="text-align: right;"> - <p><a href="/zh-CN/docs/E4X_Tutorial:Introduction">下一页 »</a></p> -</div><p></p> - -<p></p> diff --git a/files/zh-cn/archive/web/e4x_tutorial/introduction/index.html b/files/zh-cn/archive/web/e4x_tutorial/introduction/index.html deleted file mode 100644 index 2c0a2f7a76..0000000000 --- a/files/zh-cn/archive/web/e4x_tutorial/introduction/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Introduction -slug: Archive/Web/E4X_tutorial/Introduction -tags: - - E4X - - JavaScript - - Tutorial -translation_of: Archive/Web/E4X_tutorial/Introduction ---- -<h2 id="基本语法">基本语法</h2> -<p>如果启用了 E4X,基本的 XML 元素就是有效的语法。例如:</p> -<pre class="brush: js">var element = <foo/> - </pre> -<p>在开启了 E4X 的浏览器里完全有效。</p> -<p>变量的声明也不局限于单个元素,并且和 JavaScript 一样可以扩多行。</p> -<pre class="brush: js">var element2 = <foo> - <bar/> - </foo> -</pre> -<p>此外,和一般的 XML 文档一样,你能给一个元素指定属性。</p> -<pre class="brush: js">var element3 = <foo baz="1"/> - </pre> -<p>操作元素</p> -<p>E4X 的目标是为 JavaScript 程序员提供一个简单的方法来操作 XML 文档,而无需通过 DOM 接口。不过,很多你在 DOM 中用过的函数也能用到 E4X 中。最基本的就是 appendChild:</p> -<pre class="brush: js">var element1 = <foo/> -var element2 = <bar/> -element1.appendChild(element2); -</pre> -<p>它会产生你期望的正确的 XML 文档:</p> -<p><code><foo><br> - <bar/><br> - </foo> </code></p> -<p><code>JavaScript 变量</code></p> -<p><code>当 XML 文档需要和 JavaScript 做紧密交互时,E4X 真正强大的地方才得以彰显。通过特定的语法,我们能将 JavaScript 变量的值赋给 E4X 元素。这是用大括号({})标记。</code></p> -<pre class="brush: js"><code>var a = 2; -var b = <foo>{a}</foo>; -</code></pre> -<p><code>创建了一段 XML 文档,内容为 <foo>2</foo>。</code></p> -<p><code>你也可以将大括号标记用于元素的属性(名字或值)。例如:</code></p> -<pre class="brush: js"><code>var a = 2; -var b = 'bar'; -var c = <foo {b}={a}>"hi"</foo>;</code></pre> -<p><code>创建的 XML 稍有不同:<foo bar="2">"hi"</foo>。</code></p> -<p><code>注意:XML 元素只接受文本作为他们的值。大括号标记真正发生的是调用变量的 toString 方法,并将返回值填到相应位置。例如:</code></p> -<pre class="brush: js"><code>var a = {foo: 1}; -var b = <bar>{a}</bar></code></pre> -<p><code>实际上产生的文档是 <bar>[object Object]</bar>。</code></p> -<h2 id="在内容中使用内联函数"><code>在内容中使用内联函数</code></h2> -<p><code>虽然大括号限定执行单条语句,但通过匿名函数内联可以执行一些额外的处理:</code></p> -<pre class="brush: js"><code>var a = 'foo'; -var b = <bar>{function () {var c = a.toUpperCase(); var d = 5 * 5; return c + d;}()}</bar></code></pre> -<p><code>上述代码产生:<bar>FOO25</bar></code></p> -<p><code>该用法更多的讨论请参加 <a href="/en/E4X_for_templating#Inline_functions" title="en/E4X_for_templating#Inline_functions">E4X for templating</a> 。</code></p> -<h2 id="序列化"><code>序列化</code></h2> -<p><code>E4X 最强大的工具就是简单地调用 .toXMLString() 就可以将整个 XML 文档(或其中部分)序列化到字符串中。</code></p> -<pre class="brush: js"><code>var element1 = <foo/>; -var element2 = <bar/>; -element1.apppendChild(element2); -element1.toXMLString();</code></pre> -<p><code>输出为:</code></p> -<p><code><code><foo><br> - <bar/><br> - </foo></code></code></p> -<p><code>本例使用 toString() 也能达到相同效果,不过在一个只有文本内容的元素上调用 toString() 将之产生文本内容(例如,<foo>abc</foo>.toString(); 会只产生 'abc')。</code></p> diff --git a/files/zh-cn/archive/web/e4x_tutorial/namespaces/index.html b/files/zh-cn/archive/web/e4x_tutorial/namespaces/index.html deleted file mode 100644 index 8a2fc96063..0000000000 --- a/files/zh-cn/archive/web/e4x_tutorial/namespaces/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Namespaces -slug: Archive/Web/E4X_tutorial/Namespaces -translation_of: Archive/Web/E4X_tutorial/Namespaces ---- -<h2 id="E4X_与_命令空间">E4X 与 命令空间</h2> -<p>通常情况下,XML 文档包含来自多种命令空间的元素。你可以通过声明为你的 E4X 对象设置默认的命名空间。</p> -<pre class="brush: js">default xml namespace = "http://www.w3.org/1999/xhtml"; -</pre> -<p>通过重复的声明,你可以随时更改相同范围内 E4X 的命名空间。</p> -<pre class="brush: js">default xml namespace = "http://www.w3.org/1999/xhtml"; -var a = <p>Some text</p>; -default xml namespace = "http://www.mozilla.org/keymaster/gat...re.is.only.xul"; -var b = <label>More text</label>; -a.appendChild(b); -</pre> -<p>得出</p> -<p><code><p xmlns="<a class="external" href="http://www.w3.org/1999/xhtml" rel="freelink">http://www.w3.org/1999/xhtml</a>"><br> - Some text<br> - <label xmlns="<a class="external" href="http://www.mozilla.org/keymaster/gat...re.is.only.xul" rel="freelink">http://www.mozilla.org/keymaster/gat...re.is.only.xul</a>">More text</label><br> - </p> </code></p> -<h2 id="name()">name()</h2> -<p>在 XML 对象上调用 name() 会返回一个 QName 对象(Qualified Name)。QName 在支持 E4X 的 JavaScript 实现中是一个全局的构造函数。QName 对象有两个特别重要的属性:localName 返回元素的名字,且没有任何命名空间前缀;uri 返回元素所在的命名空间。</p> -<pre class="brush: js">var info = a.name(); -info.localName; // returns 'p'. -info.uri; // returns "http://www.w3.org/1999/xhtml"</pre> -<p>没有在任何命令空间的元素,他们的 uri 是一个空字符串。</p> -<p>Namespace 全局构造函数和 QName 非常相似。Namespace 的不同之处是 toString 方法,以及 Namespace 用 prefix 属性来代替 localName 属性<sup>[1]</sup> 。</p> -<p>关于 E4X 的命名空间,更多的内容请参见 <a href="/cn/E4X/Processing_XML_with_E4X#Handling_namespaces" title="cn/E4X/Processing_XML_with_E4X#Handling_namespaces">Processing XML with E4X</a> 。</p> -<h2 id="译者注">译者注</h2> -<ol> - <li>原文中没有详细讲,获得 Namespace 对象的方法是调用 .namespace()。其中 QName 的 toString 方法会输出 Namespace::name 的形式,而 Namespace 的 toString 只会输出命名空间。</li> -</ol> diff --git a/files/zh-cn/archive/web/e4x_tutorial/the_global_xml_object/index.html b/files/zh-cn/archive/web/e4x_tutorial/the_global_xml_object/index.html deleted file mode 100644 index 910b422ada..0000000000 --- a/files/zh-cn/archive/web/e4x_tutorial/the_global_xml_object/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: The global XML object -slug: Archive/Web/E4X_tutorial/The_global_XML_object -translation_of: Archive/Web/E4X_tutorial/The_global_XML_object ---- -<h2 id="全局_XML_对象">全局 XML 对象</h2> -<p>E4X-capable JavaScript 引擎在全局对象上放了一个新的属性。XML 对象有许多属性允许你定制解析和序列化 E4X。XML 元素从他们创建开始就记住 XML 对象的设置。</p> -<h2 id="扩展_XML.prototype">扩展 XML.prototype</h2> -<p>XML.prototype 和 XMLList.prototype(XMLList.prototype 实际上就是 XML.prototype)不能像其他构造器(例如 Object)一样扩展。你只能在 XML.prototype 里定义方法,而不能定义字段。要向 XML.prototype 添加一个方法,则要定义 XML.prototype.function::methodName 或 XML.prototype.funciton::[methodNameString]。下例定义 fooCount() 方法,返回 XML 中 <foo> 元素的个数:</p> -<p> </p> -<pre class="brush: js">XML.prototype.function::fooCount = function fooCount() { - return this..foo.length(); -}; -<foobar><foo/><foo/><foo/></foobar>.fooCount() // returns 3</pre> -<p> </p> -<h2 id="ignoreComments">ignoreComments</h2> -<p>默认为 true。该属性告诉 E4X 在序列化和筛选时忽略注释节点。即当 ignoreComments 为 ture 时 .comments() 返回空。观察如下例子:</p> -<p> </p> -<pre class="brush: js">var element = <foo> - <!-- my comment --> - <bar/> - </foo>; -element.comments().length(); // returns 0 -element.toXMLString(); // returns <foo><bar/></foo> -XML.ignoreComments = false; -element = <foo> - <!-- my comment --> - <bar/> - </foo>; -element.comments().length(); // returns 1 -element.toXMLString(); // returns <foo><!-- my comment --><bar/></foo></pre> -<p> </p> -<h2 id="ignoreProcessingInstructions">ignoreProcessingInstructions</h2> -<p>默认为 ture。该属性告诉 E4X 在序列化和筛选时忽略 XML 中的处理指令。例如:</p> -<p> </p> -<pre class="brush: js">var element = <foo> - <?process x="true"?> - <bar/> - <?process x="false"?> - </foo>; -element.toXMLString(); // returns <foo><bar/></foo> -XML.ignoreProcessingInstructions = false; -var element = <foo> - <?process x="true"?> - <bar/> - <?process x="false"?> - </foo>; -element.toXMLString(); // returns <foo><?process x="true"?><bar/><?process x="false"?></foo></pre> -<p> </p> -<h2 id="ignoreWhitespace">ignoreWhitespace</h2> -<p>默认为 true。忽略节点之间以及节点文本头尾两端的空白,而其他的则被解析为文本节点或作为文本节点的一部分。</p> -<h2 id="prettyPrinting">prettyPrinting</h2> -<p>默认是 true。为 true 时,toXMLString() 序列化 E4X 对象时会包含换行和缩进。</p> -<h2 id="prettyIndent">prettyIndent</h2> -<p>默认值是 2。代表 XML 树每层缩进的空格数。如果 prettyPrinting 是 false 则忽略。</p> |