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

如何在XSLT中为unparsed-text函数传递动态文件名?

解决XSLT中unparsed-text使用动态文件名的问题

你当前的写法错误在于,XSLT函数的参数里不能直接用{$变量名}这种属性值模板语法——属性值模板仅在XML属性中生效,而函数参数需要合法的XPath表达式,必须用concat()函数来拼接动态路径。

修正后的核心代码

把原来的vText变量定义替换成以下写法:

<xsl:variable name="vText" select="tokenize(unparsed-text(concat('../data/ebpp/fopinvoices/arn/emfe_afp/', $FileName, '.txt')), '&#xD;&#xA;')"/>

可选优化建议

为避免因文件不存在导致运行异常,可以先通过unparsed-text-available()检查文件可用性,再执行读取操作:

<xsl:variable name="filePath" select="concat('../data/ebpp/fopinvoices/arn/emfe_afp/', $FileName, '.txt')"/>
<xsl:variable name="vText">
    <xsl:if test="unparsed-text-available($filePath)">
        <xsl:sequence select="tokenize(unparsed-text($filePath), '&#xD;&#xA;')"/>
    </xsl:if>
</xsl:variable>

如果指定文件不存在,vText会返回空值,不会直接抛出错误。

另外,若使用XSLT 2.0及以上版本,换行符可以用正则表达式'\r?\n'匹配,兼容性更强:

tokenize(unparsed-text($filePath), '\r?\n')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:19