2012-05-11 26 views
-1

我正在使用XSLT將XML轉換爲另一個XML。XSLT轉換爲結果添加了一個意外的名稱空間

但是結果XML有xmlns:n1="http://www.w3.org/2001/XMLSchema-instance作爲屬性,爲什麼我會看到此屬性,並且我該如何避免該屬性?

+0

您能告訴我們您的scource Xml,Xslt和Xml結果嗎? – Filburt

+0

發生這種情況是因爲您沒有向我們顯示您的代碼。它會繼續發生,直到你顯示代碼,並且有人找到原因,然後你改正它。請編輯問題並添加缺少的重要信息。 –

回答

1

可能有幾個原因,也許你的樣式表有xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"聲明,因爲它需要它來選擇或匹配節點。這樣聲明可能在結果元素的範圍內,並且您需要將exclude-result-prefixes="n1"分別添加到xsl:stylesheet元素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名稱空間。使用exclude-result-prefixes="n1"作爲<xsl:transform>的屬性。

+0

這沒有工作,任何其他的想法? –

+0

它正在從我的源XML複製到結果XML,我如何避免將該名稱空間複製到我的結果文檔中 –