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

如何在Oxygen中通过Saxon EE正确运行SQL扩展?

在Oxygen中使用Saxon EE SQL扩展时JDBC驱动加载失败(SXSQ0003)

错误信息

  • 引擎名称:Saxon-EE 11.4
  • 严重程度:致命
  • 问题ID:SXSQ0003
  • 描述:无法加载JDBC驱动org.sqlite.JDBC
  • 起始位置:30:106

相关代码与配置

XSLT代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:sql="http://saxon.sf.net/sql"
    xmlns:saxon="http://saxon.sf.net/"
    exclude-result-prefixes="xs"
    version="3.0">
    
    <xsl:param name="user"/>
    <xsl:param name="password"/>
    
    <xsl:variable name="driver" select="'org.sqlite.JDBC'"/>
    <xsl:variable name="database" select="'jdbc:sqlite:S1000D.db'"/>
    
    <xsl:template match="/">
        <test-output>
            <xsl:apply-templates/>
        </test-output>
    </xsl:template>
    
    <xsl:template match="xref">
        <xsl:variable name="xrefid" select="@xrefid"/>
        <xsl:if test="not(element-available('sql:connect'))">
            <xsl:message terminate="yes">sql:connect not available</xsl:message>
        </xsl:if>
        
        <xsl:message>Connecting to <xsl:value-of select="$database"/>...</xsl:message>
        
        <xsl:variable name="conn" as="java:java.sql.Connection" xmlns:java="http://saxon.sf.net/java-type">
            <sql:connect driver="{$driver}" database="{$database}" user="{$user}" password="{$password}">
                <xsl:fallback>
                    <xsl:message terminate="yes">SQL Extensions are not installed</xsl:message>
                </xsl:fallback>
                <xsl:message>Connected...</xsl:message>
            </sql:connect>
        </xsl:variable>
        
        <xsl:variable name="q">
            <sql:query connection="$conn" table="'DataModule'" column="'*'" where="'LmTask_ID = {$xrefid}'"/>
        </xsl:variable>
        
        <xsl:for-each select="$q">
            <dmRef>
                <dmcode>
                    <!-- Use values from the query to populate the dmcode attributes -->
                </dmcode>
            </dmRef>
        </xsl:for-each>
        
    </xsl:template>
    
</xsl:stylesheet>

Saxon EE配置文件

<configuration edition="EE" xmlns="http://saxon.sf.net/ns/configuration" label="Saxon-EE (no threads)">
    <global allowMultiThreading="false" 
        timing="true" 
        validationWarnings="true" 
        validationComments="true" 
        allowExternalFunctions="true" 
        compileWithTracing="false" 
        lineNumbering="true" 
        traceExternalFunctions="true" 
        expandAttributeDefaults="true" 
        allowSyntaxExtensions="true"/>
    <xslt>
        <extensionElement namespace="http://saxon.sf.net/sql" factory="net.sf.saxon.option.sql.SQLElementFactory"/>
    </xslt>
</configuration>

已尝试的操作

  • 将sqlite-jdbc-3.42.0.0.jar放入Oxygen的lib文件夹,触发报错
  • 移至lib/connectors文件夹,无报错但驱动加载问题依旧
  • 不确定正确的jar包放置路径

解决方案

  1. 直接在Oxygen中配置类路径
    打开Oxygen的选项 > 首选项 > 转换 > XSLT > Saxon-EE,切换到类路径标签,点击添加按钮,选中你的sqlite-jdbc-3.42.0.0.jar文件。这种方式会明确将驱动jar加入Saxon的运行类路径,比手动放置文件夹更可靠。

  2. 使用Oxygen的自定义类库目录
    若要手动放置jar包,将其放入Oxygen安装目录下的lib/custom文件夹(无此目录可自行创建),该目录是Oxygen默认加载用户自定义类库的位置,启动时会自动扫描并加载其中的jar文件。

  3. 验证JDBC配置正确性

    • 确认驱动类名org.sqlite.JDBC无误,SQLite JDBC驱动确实使用该类名
    • 检查JDBC URLjdbc:sqlite:S1000D.db,确保数据库文件在Oxygen当前工作目录(可通过窗口 > 显示视图 > 控制台查看当前路径),或使用绝对路径如jdbc:sqlite:/full/path/to/S1000D.db
  4. 确认Saxon配置文件生效
    在Oxygen转换场景的处理器标签下,勾选使用自定义配置文件,并指向你的Saxon EE配置文件,确保SQL扩展元素工厂已正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:47:34