You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XSLT 3.0中调用XQuery模块?Saxon EE环境报错排查

在XSLT 3.0中复用XQuery模块失败

此前在Oracle数据库中使用大量XQuery逻辑处理XML payload的增强操作,现需迁移至支持XSLT 3.0的新平台,希望在XSLT中直接复用现有XQuery逻辑。已知可通过fn:load-xquery-module()实现,但在Oxygen XML Editor 24.0(内置Saxon EE 9.9.1.7,与服务器运行环境一致)中测试未成功。

XQuery模块(myfuncs.xq,与XSLT同目录)

module namespace myfuncs = "http://example.com/functions";

declare function myfuncs:double($num as xs:double) as xs:double {
  $num * 2
};

declare function myfuncs:triple($num as xs:double) as xs:double {
  $num * 3
};

测试用XSLT代码(使用本地绝对路径,已脱敏)

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xf="http://www.w3.org/2002/xforms"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:myfuncs="http://example.com/functions"
    xmlns:fn="http://www.w3.org/2005/xpath-functions" 
    xmlns:saxon="http://saxon.sf.net/"
    exclude-result-prefixes="xs">
    
    <!-- Load the XQuery module -->
    <xsl:function name="myfuncs:double" as="xs:double">
        <xsl:param name="num" as="xs:double"/>
        <xsl:sequence select="fn:load-xquery-module('file:C:\Users\...\...\myfuncs.xq') ! myfuncs:double($num)"/>
    </xsl:function>
    
    <xsl:function name="myfuncs:triple" as="xs:double">
        <xsl:param name="num" as="xs:double"/>
        <xsl:sequence select="fn:load-xquery-module('file:C:\Users\...\...\myfuncs.xq') ! myfuncs:triple($num)"/>
    </xsl:function>
    
    <!-- Example usage -->
    <xsl:template match="/">
        <result>
            <double> <xsl:value-of select="myfuncs:double(5)"/> </double>
            <triple> <xsl:value-of select="myfuncs:triple(5)"/> </triple>
        </result>
    </xsl:template>
</xsl:stylesheet>

错误信息

错误提示:无法定位命名空间对应的模块:file:C:\Users...myfuncs.xq

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:45:32