xml - 在 MarkLogic 上运行时如何评估 xslt 消息中的变量

标签 xml xslt marklogic marklogic-8

我有一个在 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>"&#10; />"</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/

相关文章:

Java、StaX 简单代码但出现解析错误、文件过早结束

xml - XSLT 能做 CSS 能做的一切吗?

xquery - 使用 MarkLogic 时不要在构面中包含重复数据

indexing - 在 Marklogic 中创建没有父级的地理空间对索引

c# - 需要一些项目建议

xml - 如何使用 XML 模式将多个 Excel 行导出到 XML 文件?

C# 在 xml 中合并命名空间引用

xml - XSLT 1.0 - 获取两个单独的节点/@值以显示在表中

performance - MarkLogic - 错误日志文件中连续出现缓慢的 Fsync 通知/警告

java - 使用 for 循环解析 XML 文件