Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不更改类型的情况下定义XSL变量_Java_Xslt - Fatal编程技术网

Java 在不更改类型的情况下定义XSL变量

Java 在不更改类型的情况下定义XSL变量,java,xslt,Java,Xslt,我的XSL文件中有一个变量。Java将Java.util.List返回到此变量中 <xsl:variable name="testVariable" select="java:getJavaList()"/> 之后,这个VARABLE将由以Java.util.List为参数的方法在Java中使用 <xsl:variable name="anotherVariable"> <xsl:value-of select="java:useTestVariable(

我的XSL文件中有一个变量。Java将Java.util.List返回到此变量中

<xsl:variable name="testVariable" select="java:getJavaList()"/>
之后,这个VARABLE将由以Java.util.List为参数的方法在Java中使用

<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>
问题是,如果我以这种方式定义变量,它包含的不是列表,而是树片段。我有个例外

对于扩展函数,找不到方法 MyClassName.useTestVariable[ExpressionContext,]RTREEFRAG


有人能告诉我,基于某种条件定义变量值的正确方法是什么,这样变量的类型就不会随树片段而改变吗?

我认为XSLT 1.0中没有任何方法可以做到这一点,因为根据定义,任何包含内容而不是select的xsl:variable都必须是结果树片段。但是,由于您能够调用Java,因此可以将条件逻辑放入Java函数中,然后从变量的select调用该函数。

您是否验证了Java:getValue“%”和Java:getDefaulValue的结果,如果这些结果是您所期望的,并且仍然是一个片段,请参考此链接

谢谢!我将条件登录放入java:getJavaList方法中。