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

使用Saxon 9通过XSLT读取CSV文件失败求助

解决Saxon 9中unparsed-text-available()返回false的问题

1. 确认完整文件路径

你只提及CSV位于C:/Dev/,但$pathToCSV变量必须指向具体文件名,而非仅目录。比如正确路径应为C:/Dev/data.csv,而非C:/Dev/。
检查变量定义是否正确,示例:

<xsl:param name="pathToCSV" select="'C:/Dev/your-target.csv'"/>

路径可使用/或转义后的\\,保持格式统一即可。

2. 检查文件权限与状态

确保运行Saxon的进程拥有目标CSV文件的读取权限,同时确认文件未被其他程序锁定(比如正在用Excel打开)。Windows系统下可右键文件验证“属性-安全”权限设置。

3. 指定文件编码

unparsed-text()默认采用系统编码,若CSV使用特殊编码(如UTF-8带BOM、GBK),可能导致函数识别失败。可显式指定编码参数:

<xsl:when test="unparsed-text-available($pathToCSV, 'UTF-8')">
    <xsl:variable name="csv" select="unparsed-text($pathToCSV, 'UTF-8')"/>
    <!-- 后续解析逻辑 -->
</xsl:when>

常见可选编码:GB2312、ISO-8859-1,需匹配CSV实际编码。

4. 解除Saxon安全限制

若使用Saxon PE/EE版本,默认可能限制本地文件访问。命令行运行时可添加参数放宽限制:

java -jar saxon9pe.jar -s:input.xml -xsl:your-transform.xsl -o:output.xml pathToCSV="C:/Dev/your-target.csv" -allow:all

Saxon HE版本无此限制,可跳过此步骤。

5. 排除变量传递问题

暂时将路径硬编码到函数中,测试是否能正常读取:

<xsl:when test="unparsed-text-available('C:/Dev/your-target.csv')">
    <!-- 测试逻辑 -->
</xsl:when>

若此方式成功,说明$pathToCSV变量的定义或参数传递存在问题,需检查变量是否正确传入。

6. 验证文件存在性

手动确认C:/Dev/下的CSV文件名拼写正确,注意大小写(部分环境下Saxon对文件名大小写敏感),避免出现.txt误写为.csv这类低级错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:20:59