JavaScript を使用して XML を作成する必要があります。難しいことの 1 つは、ノードのテキスト コンテンツに XML 修飾名を入力する必要があることです。つまり、myns:myelement などのローカル名とプレフィックスです。
問題は、プレフィックスがバインドされる名前空間の他の要素や属性が XML ドキュメントに含まれていないことです。そのため、名前空間ノード (xmlns) を外側の要素に追加して、プレフィックスを定義する必要があります。例えば: -
<myElement xmlns:myprefix="http://something">myprefix:foo</myElement>
JavaScript で xmlns 名前空間ノードを追加する良い方法がわかりません。現在、私は次のひどいハックを持っています: -
// Hacky way to get a namespace prefix definition. TODO: can we do something nicer?
var prefix = "ixe";
requestElement.setAttributeNS(inputTypes[0].namespaceURL, prefix + ":" + "def", "");
inputElement.textContent = prefix + ":" + inputTypes[0].localName;
必要な名前空間と任意のプレフィックスを使用して、不要な属性を作成しています。これにより、生成されたドキュメントには、名前空間のプレフィックスを定義する xmlns 名前空間ノードが含まれます。
最新の FireFox と Chrome では実行できますが、IE では実行できませんinputElement.setAttribute("xmlns:" + PREFIX, inputType.namespaceUri);
。しかし、ブラウザ中立のソリューションが必要です。
しかし、そのダミー属性を作成したくはありません。確かに、名前空間ノードを明示的に作成できる必要があります。私は何を逃したのですか?