XSLT - 剥离子节点后的存储节点



删除一个不需要的元素后,如何存储设置为变量的节点?示例,如果输入 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 中的变量访问

正如丹尼尔所说: 将临时树计算成变量并不困难:

<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()扩展功能,该功能具有更好的便携性。

XSLT 2.0通过消除result treesnodesets之间的区别,使用概念temporary tree来涵盖两者,从而解决了这个问题。因此,在 2.0 中,您可以简单地针对变量进行导航,而无需先将其转换为节点集。

最新更新