簡體   English   中英

定義XSL變量而不更改類型

[英]Define XSL variable without type changing

我的XSL文件中有一個變量。 Java將java.util.List返回到此變量中

<xsl:variable name="testVariable" select="java:getJavaList()"/>

之后,此可變項在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)

有人可以建議基於某種條件定義變量值的正確方法是什么,以使變量的類型不會隨樹碎片而改變嗎?

我認為XSLT 1.0中沒有任何方法可以執行此操作,因為根據定義,任何具有內容而不是select xsl:variable必須是結果樹片段。 但是,由於您可以調用Java,因此可以將條件邏輯放入Java函數中,然后從變量的select調用它。

您是否已驗證java:getValue('%')java:getDefaulValue()結果,如果這些結果出乎您的意料,但仍然很糟糕,請參閱此鏈接https://blogs.oracle.com/ rammenon / entry / result_tree_fragments_and_node

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM