我知道我可以通过以下方式将返回函数的值赋给xslt中的变量:
<xsl:variable name="var" select="myClass:function1()"/>
但是我想调用一个void函数,上面的语法虽然仍然有效,但有更好或更清晰的方法吗?
答案 0 :(得分:5)
从XSLT到Java的接口不是标准化的;这取决于您使用的是哪个XSLT处理器,因此您需要在问题中包含此信息。 (实际上,你甚至不会说你是否在使用Java;我从上下文中假设了这一点。)
在Saxon中,绝对不建议在xsl:variable中调用具有副作用的函数,因为变量是懒惰的,所以你无法控制评估的顺序,如果变量从未被引用那么它就不会完全评估。如果必须调用具有副作用的函数,最好在xsl:value-of指令中执行此操作,如果函数确实返回值,则该值将添加到结果树中。 (Saxon优化器不会使用函数永远不会返回任何东西的知识,这通常会导致它不被调用。)