Function 如何在xslt中调用void外部函数?
我知道我可以通过以下方式将返回函数的值分配给xslt中的变量:Function 如何在xslt中调用void外部函数?,function,xslt,Function,Xslt,我知道我可以通过以下方式将返回函数的值分配给xslt中的变量: <xsl:variable name="var" select="myClass:function1()"/> 但是我想调用一个void函数,虽然上面的语法仍然有效,但是有更好或更干净的方法吗?从XSLT到Java的接口没有标准化;这取决于您使用的XSLT处理器,因此您需要在问题中包含这些信息。(实际上,您甚至没有说您是否在使用Java;我是根据上下文假设的) 在Saxon中,绝对不建议在xsl:variable中
<xsl:variable name="var" select="myClass:function1()"/>
但是我想调用一个void函数,虽然上面的语法仍然有效,但是有更好或更干净的方法吗?从XSLT到Java的接口没有标准化;这取决于您使用的XSLT处理器,因此您需要在问题中包含这些信息。(实际上,您甚至没有说您是否在使用Java;我是根据上下文假设的)
在Saxon中,绝对不建议在xsl:variable中调用具有副作用的函数,因为变量是惰性求值的,因此您无法控制求值顺序,如果从未引用该变量,则根本不会对其求值。如果必须调用具有副作用的函数,最好在xsl:value指令中执行,如果函数确实返回值,则该值将添加到结果树中。(Saxon优化器特意不使用函数从不返回任何内容的知识,这通常会导致它不被调用。)从XSLT调用void函数有什么意义?理想情况下,我认为您应该避免使用带有副作用的函数,因为这违背了XSLT的功能特性。