XSLT:根据名称空间复制节点上的所有子节点uri

问题描述:

我完全是XSLT的新手,我需要将它用于一些转换。我想了解的是如何复制aross xml文档上特定元素的子元素。XSLT:根据名称空间复制节点上的所有子节点uri

这个元素是动态的,但我知道它的命名空间的URI。有没有一种方法可以根据我所拥有的uri来匹配这个元素,然后将所有的子元素都复制过来?

由于

xsl:copy-of该元件可用于复制一个节点集合到结果树。

例如,在foo命名空间的子节点复制到结果,你可以使用这样的事情:

<xsl:copy-of xmlns:ns="foo" select="ns:*"/> 

又见xsl:copy元素复制当前节点。


编辑补充:如果你只知道在运行时的命名空间,看到namespace-uri XPath函数。

例如,如果你有可变$uri含有命名空间URI,的等效以上将是:

<xsl:copy-of select="*[namespace-uri() = $uri]"/> 
+0

您好的Jukka,谢谢。这是如何工作的?就我而言,foo将是一个变量;所以像xmlns:ns = $ uri。也许有一个更好的解决方案。 – isaiah 2013-03-08 23:57:56

+0

@isaiah,有'namespace-uri()'函数提取节点的名称空间URI。我编辑了答案来添加一个例子。 – 2013-03-09 05:33:28

+0

谢谢,这似乎工作。我想知道,从你的角度来看,我如何学习xslt?我可以看到它非常强大。 – isaiah 2013-03-09 15:20:01