我在其中一个已经完成的XSLT文件中找到了这个场景(如下)。但是,我找不到它的含义。有谁能告诉我下面代码的含义?
<xsl:variable name="paramsDoc" select="if (doc-available('input:request')) then doc('input:request') else ()"/>
这一行doc-available('input:request')
究竟做了什么?它是如何工作的?
答案 0 :(得分:1)
doc-available($URI)
函数检查指令doc($URI
是否实际成功,即文档是否存在。
事先知道是否可以检索文档并且只有在可用的情况下才处理它是有用的。在你的情况下,行
<xsl:variable name="paramsDoc" select="if (doc-available('input:request')) then doc('input:request') else ()"/>
表示:
创建一个名为&#34; paramsDoc&#34;的变量(节点集)。如果URI&#34;输入请求&#34;可用于定位和读取文档,然后检索文档并返回其文档节点,否则存储&#34;()&#34;作为该变量的值。
然而,在我看来,&#34;输入:请求&#34;似乎不是文件名,也不是变量。
您还应该记住,如果doc-available
返回false,则并不总是意味着文件不存在。可能还有其他原因导致无法读取或解析它。
编辑:根据@DanielHaley的建议,如果doc-available()
未成功,则会返回空序列,()
。
答案 1 :(得分:0)
doc
函数如果向其传递无法加载的URI,则会引发错误。 doc-available
是一种在尝试检索特定URI之前测试它的方法。
您提供的片段会将paramsDoc
变量设置为从URI加载的XML文档的文档根节点&#34; input:request&#34; (我猜测它必须是一个特殊的URI方案,你处理器用它来提供来自某个外部源的输入),但是如果该文档不可用,那么该变量将被设置为空序列而不是导致错误。