在变量中创建错误消息,我注意到了一个怪癖。我原本期望以下所有3个例子都可以使用 - 我正在使用Saxon 9.8EE。
这很好用:
<xsl:variable name="error" select="'Error reading: ' || $file"/>
这样做:
<xsl:variable name="error"><text>Error reading: {$file}</text></xsl:variable>
但是这会将{$ file}呈现为文字字符串,而不是$ file:
的值<xsl:variable name="error">Error reading: {$file}</xsl:variable>
用例位于另一个块中以捕获读取的失败文件:
<xsl:otherwise>
<xsl:variable name="error" select="'Error reading: ' || $file"/>
<xsl:message>{$error}</xsl:message>
{$error}
</xsl:otherwise>
嵌入式文本元素是必需的吗?为什么消息元素不需要这个?
答案 0 :(得分:2)
这是一个错误。请观看错误跟踪器
https://saxonica.plan.io/issues/3748
继续解决。
要获得解决方法,请添加属性as="xs:string"
。事实上,无论如何添加它可能是一个好主意,因为变量几乎肯定是用作字符串(而不是包含单个文本节点子节点的文档节点,这是你没有的&#34; as&#34;属性)。