Xml 剥离子节点后的xslt存储节点
删除一个不需要的元素后,如何将节点集存储到变量?输入xml的示例Xml 剥离子节点后的xslt存储节点,xml,xslt-1.0,Xml,Xslt 1.0,删除一个不需要的元素后,如何将节点集存储到变量?输入xml的示例 <we:head xmlns:we="http://etest"> <we:abc>123</we:abc> <we:tst>fgh</we:tst> <we:sub> <df></df> </we:sub> </we:head> 123 fgh 我希望变量在xslt中访问时具有以下内容,sub应该被删
<we:head xmlns:we="http://etest">
<we:abc>123</we:abc>
<we:tst>fgh</we:tst>
<we:sub>
<df></df>
</we:sub>
</we:head>
123
fgh
我希望变量在xslt中访问时具有以下内容,sub应该被删除
<we:head xmlns:we="http://etest">
<we:abc>123</we:abc>
<we:tst>fgh</we:tst>
</we:head>
123
fgh
请注意,我使用的是xslt 1.0,而且我不希望将其传递到输出,应该能够从xslt中的变量访问,正如Daniel所说:将临时树计算成变量并不困难:
<xsl:variable name="foo">
<!-- do whatever XSLT is needed here to produce the XML results -->
</xsl:variable>
但在XSLT1.0中,这将是一个结果树
。您可以将结果树复制到输出中,但不能在XSLT中进一步处理它。要做到这一点,您需要将其转换为一个节点集
,而1.0规范没有定义这样做的机制
许多早期的处理器添加了一个自定义扩展函数,可以这样做。目前大多数处理器都支持标准化处理器,这种处理器具有更好的便携性
XSLT2.0解决了这个问题,它消除了
结果树
和节点集
之间的区别,使用了临时树
的概念来覆盖这两个树。因此,在2.0中,您可以简单地针对变量导航,而不必首先将其转换为节点集。在XSLT 1.0中,如果不使用扩展函数,如exsl:node-set()
(from),您将无法执行此操作。你的处理器支持exslt吗?下面的代码也可以吗?我可以使用exsl:node-set()函数