1

を呼び出すたびにxml.setNamespace(ns)、要素の名前空間は に設定されますnsns、独自のプレフィックスを持つ別の名前空間として要素に追加されます。E4X構文を使用できないため、XML.prototype.function::setNamespace定義せずに後者が発生しないようにする方法を知りたいです(変更しても問題ありません)。@xmlnsあるいは、XML.prototype.function::setAttributeE4X @attribute 構文を使用しない (もちろん、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();
4

2 に答える 2

0

私は取得するだけで満足している<xhtml:my-root xmlns:xhtml="...">...</xhtml:my-root>ので、名前空間()を使用することに固執するつもりですnew Namespace(name, nsURI)

于 2009-10-27T23:12:58.810 に答える
0

答えはわかりませんが、あなたのコードを Rhino 1.7r2 で実行したところ、異なる結果が返されました。これは実装に依存しているか、E4X 実装の 1 つにバグがあります。わからない。

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"/>

古い「名前空間プレフィックスは重要ではないはずですが、現実の世界では実際には重要です」という問題に遭遇したようです。:(

于 2009-10-27T07:45:16.040 に答える