我的XSL文件中有一个变量。 Java将java.util.List返回到此变量
<xsl:variable name="testVariable" select="java:getJavaList()"/>
之后,这个vairable在Java中被用于将java.util.List作为参数
的方法<xsl:variable name="anotherVariable">
<xsl:value-of select="java:useTestVariable($testVariable)"/>
</xsl:variable>
现在需求已更改为根据特定条件设置testVariable值。我试过这种方法
<xsl:variable name="testVariable">
<xsl:choose>
<xsl:when test="contains($oneMoreVariable, '%')">
<xsl:value-of select="java:getValue('%')" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="java:getDefaulValue()" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
问题是,如果我以这种方式定义变量,它不包含List,而是包含树片段。我得到一个例外
对于扩展功能,找不到方法 MyClassName.useTestVariable([ExpressionContext,] #RTREEFRAG)
有人可以建议根据某些条件定义变量值的正确方法是什么,那么变量的类型不会随树片段改变?
答案 0 :(得分:0)
我认为在XSLT 1.0中没有任何方法可以将定义为任何xsl:variable
,而内容而不是select
必须是结果树片段。但是既然你能够调用Java,就可以将条件逻辑放入Java函数中,然后从变量select
中调用它。
答案 1 :(得分:0)
您是否已验证java:getValue('%')
和java:getDefaulValue()
的结果,如果这些结果符合您的预期,仍然是片段,请参阅此链接https://blogs.oracle.com/rammenon/entry/result_tree_fragments_and_node