2016-04-21 47 views
0

是否可以複製僅使用xslt使用的標記的名稱空間?使用xslt只複製使用過的名稱空間

比如我目前使用:

<xsl:copy-of select="//namespace::*" /> 

這是盲目複製所有的命名空間,但我想給定的標籤中僅複製使用的命名空間,這可能嗎?

+0

那麼,你認爲什麼用途?僅限於在限定節點名稱中使用,還是在屬性或元素值中使用合格名稱? –

+0

我想要最後一部分'限定名稱的元素值' –

+0

正如[您之前關於同一主題的其中一個問題](http://stackoverflow.com/a/36742861/3016153)中所述,XSLT處理器將自動包括所有必需的(即在輸出中使用的)名稱空間聲明,而不必明確地這樣做。 –

回答

0

如果您使用xsl:copy-of複製元素,則實際在元素名稱或其某個屬性上使用的所有名稱空間也會自動被複制(而其他名稱空間不會被複制)。

同樣,xsl:copy「自動執行正確的操作」。

如果要複製凡在作用域上的元素$ E不復制元素本身的命名空間某些原因,你可以使用

<xsl:copy-of select="$E/namespace::*"/> 

因爲你用的是「標籤」,而比「元素」,我懷疑你對XDM數據模型沒有深入的瞭解。在操作名稱空間時,這種理解很重要,因爲它根本不直觀,並且可能是數據模型與「表面語法」最大不同的地方。尤其需要注意的是,元素具有名稱空間節點,用於在元素本身及其任何祖先上聲明的所有名稱空間。