文本值模板和xsl:变量

时间:2018-04-17 16:01:46

标签: xslt saxon xslt-3.0

在变量中创建错误消息,我注意到了一个怪癖。我原本期望以下所有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>

嵌入式文本元素是必需的吗?为什么消息元素不需要这个?

1 个答案:

答案 0 :(得分:2)

这是一个错误。请观看错误跟踪器

https://saxonica.plan.io/issues/3748

继续解决。

要获得解决方法,请添加属性as="xs:string"。事实上,无论如何添加它可能是一个好主意,因为变量几乎肯定是用作字符串(而不是包含单个文本节点子节点的文档节点,这是你没有的&#34; as&#34;属性)。