绕过Xalan XSLT中的惰性变量评估

时间:2018-02-20 19:59:39

标签: xml xslt xalan

我正在处理我们用来处理XML文件的XSLT,如果有元素,我需要触发一些操作。创建一个Java扩展思考我可以简单地设置一个它将评估的变量:

<xsl:for-each select="//attachments/attachment" xmlns:fbattach="java://com.package.ProcessAttachment">
    <xsl:variable name="content"><xsl:value-of select="filedata" /></xsl:variable>
    <xsl:variable name="fileName"><xsl:value-of select="name"  /></xsl:variable>
    <xsl:variable name="fileType"><xsl:value-of select="fileType" /></xsl:variable>
    <xsl:variable name="attachmentId"><xsl:value-of select="fbattach:test($fileName, $fileType, $content)" /></xsl:variable>
</xsl:for-each>

我看到的问题是attachmentId似乎没有被评估,除非我做这样的事情:

<attatchment2><xsl:value-of select="$attachmentId" /></attatchment2>

似乎Xalan懒惰地评估变量,只在进行输出时进行评估。 Thisthis似乎证实了这一理论。

有没有办法强制进行评估,比如设置或什么?

1 个答案:

答案 0 :(得分:1)

如果您想确保评估表达式,一种方法是在xsl:messagehttps://www.w3.org/TR/xslt-10/#message)内使用它。