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]"/>
您好的Jukka,谢谢。这是如何工作的?就我而言,foo将是一个变量;所以像xmlns:ns = $ uri。也许有一个更好的解决方案。 – isaiah 2013-03-08 23:57:56
@isaiah,有'namespace-uri()'函数提取节点的名称空间URI。我编辑了答案来添加一个例子。 – 2013-03-09 05:33:28
谢谢,这似乎工作。我想知道,从你的角度来看,我如何学习xslt?我可以看到它非常强大。 – isaiah 2013-03-09 15:20:01