2012-05-11 8 views
-1

私はXSLTを使用してXMLを別のXMLに変換しています。XSLT変換により、予期しない名前空間が結果に追加されます

結果XMLは属性としてxmlns:n1="http://www.w3.org/2001/XMLSchema-instanceを持っていますが、なぜこの属性が表示されますか?この属性を避けるにはどうすればよいですか?

+0

Xml、Xslt、Xmlの結果を表示できますか? – Filburt

+0

あなたのコードを表示していないため、これが起こっています。コードを表示して誰かがその理由を見つけてから修正するまで、これは起こり続けます。不足している重要な情報を追加して質問を編集してください。 –

答えて

1

いくつかの理由が考えられます。ノードを選択または一致させるためには、スタイルシートにxmlns:n1="http://www.w3.org/2001/XMLSchema-instance"という宣言が含まれている可能性があります。こうすることで、宣言が結果要素の範囲内にある可能性があります。xsl:stylesheetexclude-result-prefixes="n1"をそれぞれ追加する必要があります。xsl:transform要素は結果ドキュメントに宣言が表示されないようにします。

または、名前空間宣言が入力から出力にコピーされます。そのような場合に役立つ入力XML、XSLT、XML結果と現在のXML結果の詳細を実際に見る必要があります。

+0

後のケースが真で、ソースXMLから結果XMLにコピーされていますが、その名前空間を結果ドキュメントにコピーしないでください。 –

+0

XSLT 2.0を使用している場合、 'xsl:copy-of'と' xsl:copy'は属性 'copy-namespaces =" no "'を提供しています。http://www.w3.org/TR/xslt20/#copying 。 XSLT 1.0を使用する場合は、代わりに ' ...'を使用する必要があります「 ...」を使用してスコープネームスペースのコピーを避けてください。 –

0

これは、 "n1" XML名前空間で作業しているために起こります。 <xsl:transform>の属性にexclude-result-prefixes="n1"を使用してください。

+0

これはうまくいかなかった、他のアイデア? –

+0

ソースXMLから結果XMLにコピーされていますが、その名前空間を結果ドキュメントにコピーしないでください –

関連する問題