2016-04-21 57 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数据模型没有深入的了解。在操作名称空间时,这种理解很重要,因为它根本不直观,并且可能是数据模型与“表面语法”最大不同的地方。尤其需要注意的是,元素具有名称空间节点,用于在元素本身及其任何祖先上声明的所有名称空间。