使用过多参数调用的函数

Jag*_*ger 1 xml xslt xpath exslt xslt-1.0

我想使用 EXSLT 库在 XSLT 1.0 中编写一个函数。这是我的样式表。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:func="http://exslt.org/functions"
    xmlns:my="http://www.example.com/">

    <xsl:output method="text" encoding="UTF-8"/>

    <func:function name="my:test">
        <xsl:param name="param1" />
        <xsl:param name="param2" />
        <func:result select="concat($param1, $param2)" />
    </func:function>

    <xsl:template match="/">
        <xsl:value-of select="my:test('test1', 'test2')" />
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试执行它xsltproc时出现以下错误。

{ http://www.example.com/ }test: 调用时参数过多 xmlXPathCompiledEval: 堆栈上还剩 1 个对象。运行时错误:文件 exslt_function_test.xsl 第 16 行元素值-XPath 评估未返回结果。

我没有看到任何错误。该函数被定义和调用正好有两个参数。过去有没有人遇到过类似的问题?

删除任何不必要的评论... 不,我不能使用 XSLT 2.0。

mic*_*57k 5

嗯,这是一个很好的谜题。结果是 libxslt(xsltproc 使用的处理器)不会执行该函数,除非您包含extension-element-prefixes="func"在该<xsl:stylesheet>元素中。

不知道为什么会这样 - 其他处理器没有这样的问题。