私はXSLTを使用してXMLを別のXMLに変換しています。XSLT変換により、予期しない名前空間が結果に追加されます
結果XMLは属性としてxmlns:n1="http://www.w3.org/2001/XMLSchema-instance
を持っていますが、なぜこの属性が表示されますか?この属性を避けるにはどうすればよいですか?
私はXSLTを使用してXMLを別のXMLに変換しています。XSLT変換により、予期しない名前空間が結果に追加されます
結果XMLは属性としてxmlns:n1="http://www.w3.org/2001/XMLSchema-instance
を持っていますが、なぜこの属性が表示されますか?この属性を避けるにはどうすればよいですか?
いくつかの理由が考えられます。ノードを選択または一致させるためには、スタイルシートにxmlns:n1="http://www.w3.org/2001/XMLSchema-instance"
という宣言が含まれている可能性があります。こうすることで、宣言が結果要素の範囲内にある可能性があります。xsl:stylesheet
にexclude-result-prefixes="n1"
をそれぞれ追加する必要があります。xsl:transform
要素は結果ドキュメントに宣言が表示されないようにします。
または、名前空間宣言が入力から出力にコピーされます。そのような場合に役立つ入力XML、XSLT、XML結果と現在のXML結果の詳細を実際に見る必要があります。
後のケースが真で、ソースXMLから結果XMLにコピーされていますが、その名前空間を結果ドキュメントにコピーしないでください。 –
XSLT 2.0を使用している場合、 'xsl:copy-of'と' xsl:copy'は属性 'copy-namespaces =" no "'を提供しています。http://www.w3.org/TR/xslt20/#copying 。 XSLT 1.0を使用する場合は、代わりに '
これは、 "n1" XML名前空間で作業しているために起こります。 <xsl:transform>
の属性にexclude-result-prefixes="n1"
を使用してください。
これはうまくいかなかった、他のアイデア? –
ソースXMLから結果XMLにコピーされていますが、その名前空間を結果ドキュメントにコピーしないでください –
Xml、Xslt、Xmlの結果を表示できますか? – Filburt
あなたのコードを表示していないため、これが起こっています。コードを表示して誰かがその理由を見つけてから修正するまで、これは起こり続けます。不足している重要な情報を追加して質問を編集してください。 –