Xml 剥离子节点后的xslt存储节点

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应该被删

删除一个不需要的元素后,如何将节点集存储到变量?输入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: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()函数