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

如何检测缺失文件且不报错?XSL保留已删XML引用的处理

解决Saxon XSL转换中缺失XML文件的警告问题

要解决删除Test.xml后Saxon抛出的I/O警告,同时保留XSL里的文件引用,可以利用XSLT的doc-available()函数先判断文件是否存在,仅在文件可获取时执行模板应用操作。

修改后的XSL代码

<xsl:if test="doc-available('../Folder_1/Test.xml')">
    <xsl:apply-templates mode="replaceVariables"
                select="document('../Folder_1/Test.xml')">
    </xsl:apply-templates>
</xsl:if>

原理说明

doc-available()是XSLT 2.0及以上版本支持的函数(你的Saxon-PE 9.9完全兼容),它会安静地检查目标文档的可用性,不会触发I/O错误或警告。返回true时才执行内部的apply-templates,文件不存在时直接跳过这段逻辑,自然就不会出现找不到文件的警告。

可选:添加默认处理逻辑

如果需要在文件缺失时执行默认操作,可以用<xsl:choose>扩展:

<xsl:choose>
    <xsl:when test="doc-available('../Folder_1/Test.xml')">
        <xsl:apply-templates mode="replaceVariables" select="document('../Folder_1/Test.xml')"/>
    </xsl:when>
    <xsl:otherwise>
        <!-- 此处添加文件不存在时的默认处理代码 -->
    </xsl:otherwise>
</xsl:choose>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:28:09