因此,我有一個輸入文件在默認名稱空間(xmlns="companyURL"
)中使用我公司的名稱空間,但我希望我的輸出文件使用默認名稱空間(xmlns:cmp="companyURL"
)以外的其他名稱空間。所以我建立基於cmp
命名我的文件,但後來我想複製一些內部元素:在XSL翻譯中更改XML文件的名稱空間
<xsl:element name="cmp:container">
<xsl:for-each select="foo">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:element>
不幸的是,這樣做是定義的默認命名空間爲每個內部元素,使文件難以置信詳細而醜陋。簡單的例子:
來源:
<foo xmlns="companyURL">
<num1>asdf</num1>
<num2>ghjkl</num2>
</foo>
假作:
<cmp:container xmlns:cmp="companyURL">
<num1 xmlns="companyURL">asdf</num1>
<num2 xmlns="companyURL">ghjkl</num2>
</cmp:container>
當然,companyURL
又大又長的又醜,而且它在這兩個地方是相同的,所以我會更喜歡上面的結果只是以下內容:
<cmp:container xmlns:cmp="companyURL">
<cmp:num1>asdf</cmp:num1>
<cmp:num2>ghjkl</cmp:num2>
</cmp:container>
有沒有簡單的方法來做到這一點,或者我應該將cmp
命名空間下的所有東西都轉換爲默認的命名空間?如果可能,我寧願使用明確的命名空間命名,它有助於理解我的經驗中的XSLT。
好問題(+1)。 – 2010-08-12 01:31:14
*「希望我的輸出文件使用非默認名稱空間」* >>按照您的示例,更改前綴(或從默認值改爲前綴)並不意味着改變命名空間。儘管前綴不同,但從XML + NS的角度來看,元素將保持相同(localname +名稱空間不變)。 – Abel 2010-08-12 12:11:02
我指的是標籤名稱前面的可見標識符。 – 2010-08-12 16:28:17