在删除一个不需要的元素后,如何将节点集存储到变量?输入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>
我希望变量在xslt中访问时具有以下内容,sub应该被删除
<we:head xmlns:we="http://etest">
<we:abc>123</we:abc>
<we:tst>fgh</we:tst>
</we:head>
请注意,我正在使用xslt 1.0而且我也不希望将其传递给输出,应该能够从xslt中的变量访问
答案 0 :(得分:0)
正如Daniel所说:将临时树计算到变量中并不困难:
<xsl:variable name="foo">
<!-- do whatever XSLT is needed here to produce the XML results -->
</xsl:variable>
但是在XSLT 1.0中,这将是result tree
。您可以将结果树复制到输出中,但不能在XSLT中进一步处理它。要做到这一点,你需要把它变成nodeset
,1.0规范没有定义这样做的机制。
许多早期处理器都添加了自定义扩展功能,可以这样做。目前大多数处理器都支持标准化的EXSLT node-set()
extension function,它具有更好的便携性。
XSLT 2.0通过删除result trees
和nodesets
之间的区别来解决这个问题,使用概念temporary tree
来涵盖两者。因此,在2.0中,您可以简单地导航变量,而无需先将其转换为节点集。