gpt4 book ai didi

javascript - 使用 xml.setNamespace() 时不添加 namespace

转载 作者:行者123 更新时间:2023-11-28 10:35:11 25 4
gpt4 key购买 nike

每当我调用 xml.setNamespace(ns) 时,元素的命名空间都会设置为 ns,但 ns 也会添加为另一个命名空间,它有自己的元素前缀。我想知道如何阻止后者发生(我可以修改 XML.prototype.function::setNamespace)而不定义 @xmlns ,因为我可以' t 使用 E4X 语法。或者,不使用 E4X @attribute 语法的 XML.prototype.function::setAttribute (当然,除了使用 function:: 来定义它)会更好。

示例:

var xhtml = new Namespace("http://www.w3.org/1999/xhtml"),
xml = <foo/>;
xml.setNamespace(xhtml);

// what I get:
xml.toXMLString() ===
<foo
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
/>.toXMLString();

// what I want:
xml.toXMLString() ===
<foo
xmlns="http://www.w3.org/1999/xhtml"
/>.toXMLString();

最佳答案

我不知道答案,但我通过Rhino 1.7r2运行了你的代码,它返回了不同的结果。这要么与实现相关,要么我们的 E4X 实现之一存在错误。不知道是哪个。

在 Rhino 1.7r2 上:

var xhtml = new Namespace("http://www.w3.org/1999/xhtml"),
xml = <foo/>;
xml.setNamespace(xhtml);

js> xml.toXMLString()
<e4x_0:foo xmlns:e4x_0="http://www.w3.org/1999/xhtml"/>

看起来您遇到了古老的“命名空间前缀应该微不足道,但在现实世界中它们实际上很重要”的问题。 :(

关于javascript - 使用 xml.setNamespace() 时不添加 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com