我正在处理我们用来处理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懒惰地评估变量,只在进行输出时进行评估。 This和this似乎证实了这一理论。
有没有办法强制进行评估,比如设置或什么?