xsl:function定义的函数可以代替xpath 3.0内联函数吗?

Fre*_*kle 4 xslt saxon xpath-3.0 xslt-3.0

我在xpath 3.0规范中玩这个示例:

fn:fold-left(function($a, $b) { $a + $b }, 0, 1 to 5)
Run Code Online (Sandbox Code Playgroud)

我试图将内联函数替换为xsl:function定义的函数。

<xsl:function name="ki:plus" as="xs:integer*">
<xsl:param name="a" as="xs:integer*">
<xsl:param name="b" as="xs:integer">

    <xsl:value-of select="$a + $b">

</xsl:function>
Run Code Online (Sandbox Code Playgroud)

但是出现了“左折的第一个参数不能为空序列”的错误。

我做错什么了吗?

提前致谢。

Dim*_*hev 5

这是一个正确的例子

<xsl:stylesheet version="3.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:my="my:my">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>

  <xsl:template match="/">
    <xsl:sequence select=
      "fold-left(my:add#2, 0, 1 to 5)
      "/>
  </xsl:template>

  <xsl:function name="my:add" as="xs:integer">
    <xsl:param name="arg1" as="xs:integer"/>
    <xsl:param name="arg2" as="xs:integer"/>

    <xsl:sequence select="$arg1 + $arg2"/>
  </xsl:function>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

当应用于任何XML文档(未使用)时,会产生所需的正确结果

15
Run Code Online (Sandbox Code Playgroud)