我有一个在 Marklogic 中评估的 xslt(通过 xdmp:xslt-invoke
)。我正在尝试评估 xsl:message
标记内的变量,但是,当 Marklogic 遇到消息时,它不会评估变量,而只是显示其中的文本。
例如:
<xsl:template match="/">
<xsl:variable name="x" select="//xpath"/>
<xsl:message terminate="yes">Terminating <xsl:value-of select="$x"/></xsl:message>
</xsl:template>
评估时,我在输出中看到类似这样的内容:
[XSLT] XSLT-MSGTERMINATE: (err:XTMM9000)<xsl:message terminate="yes"><xsl:text>"Terminating "</xsl:text><xsl:value-of select="$x"/><xsl:text>" />"</xsl:text></xsl:message> -- xsl:message instruction called with terminate
有没有办法在消息中实际评估和显示 $x 的值?
最佳答案
虽然 xsl:message terminate="yes"
没有计算变量。我能够按以下方式通过 xdmp:eval
评估变量,并将终止消息显示为 fn:error
<xsl:template match="//some xpath condition">
<xsl:variable name="x" select="//someXpath string value"/>
<xsl:message terminate="yes">
<xsl:value-of
select="
xdmp:eval(concat(
'xquery version ''1.0-ml'';',
'let $message := concat(''Terminating with value ''', ',', '''', $x, ''')',
'let $_error := error(xs:QName(''Error''), $message)',
'return $_error'
))"
/></xsl:message></xsl:template>
以下 xdmp:eval
将正确评估 $x
变量值。
关于xml - 在 MarkLogic 上运行时如何评估 xslt 消息中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119961/