如果正在使用文档功能并打开可能不存在的文件,例如
<xsl:variable name="input" select="document($A)/document/input"/>
Run Code Online (Sandbox Code Playgroud)
什么是处理错误的优雅方式?如果无法打开文件,我想要变量的默认值.
没有通用的方法来优雅地处理document()函数中的错误.
根据XSLT 1.0规范:
" 如果检索资源时出错,则XSLT处理器可能会发出错误信号;如果没有发出错误信号,则必须通过返回空节点集来恢复. "
这意味着我们受实现者的支配是否由函数产生空节点集(好的,我们可以测试空(不存在的)节点集)或"发出错误信号",这通常可能结束转型.
如果我们检查了特定XSLT处理器的特定实现只生成了一个空节点集并且没有结束转换,我们可能会决定测试这个条件并"正常"恢复.但是,我们的应用程序变得不可移植,它依赖于这个特定的XSLT处理器,并且绝对不能保证在下一个版本中这种行为不会变为更糟糕的行为.风险,不是吗?
因此,最好是启动转换的人(例如来自C#程序内)应该检查文件的存在并将适当的参数传递给转换,以反映这种存在.