2

我知道我可以通过以下方式将返回函数的值分配给 xslt 中的变量:

<xsl:variable name="var" select="myClass:function1()"/>

但是我想调用一个 void 函数,虽然上面的语法仍然有效,有没有更好或更干净的方法来做到这一点?

4

1 回答 1

5

从 XSLT 到 Java 的接口没有标准化;这取决于您使用的 XSLT 处理器,因此您需要在问题中包含此信息。(实际上,您甚至没有说您是否使用 Java;我从上下文中假设了这一点)。

在 Saxon 中,绝对不建议在 xsl:variable 中调用具有副作用的函数,因为变量是惰性求值的,因此您无法控制求值顺序,如果从未引用该变量,则不会在全部。如果必须调用具有副作用的函数,最好在 xsl:value-of 指令中执行,如果函数确实返回值,则该值将添加到结果树中。(Saxon 优化器竭尽全力不使用函数从不返回任何内容的知识,这通常会导致它不被调用。)

于 2013-02-01T10:36:19.010 回答