如何检测缺失文件且不报错?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
相关产品推荐
相关产品推荐

