将XSLT中的变量字符串与IF条件进行比较

将XSLT中的变量字符串与IF条件进行比较,xslt,xslt-1.0,xslt-2.0,Xslt,Xslt 1.0,Xslt 2.0,我在XSLT中使用一个变量,该变量是从JAVA代码返回的,我将其分配给一个变量,并将其与字符串进行比较。我能够使用成功打印变量,但无法满足IF条件 下面是我的XSL <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:variable name="errorMess

我在XSLT中使用一个变量,该变量是从JAVA代码返回的,我将其分配给一个变量,并将其与字符串进行比较。我能够使用
成功打印变量,但无法满足IF条件

下面是我的XSL

  <xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:variable name="errorMessage">$CONTEXT{parameters.customeErrorMessage}</xsl:variable>
        <h1><xsl:value-of select="$errorMessage" /></h1>
        <xsl:if test="(contains($errorMessage, 'PAGE_NOT_FOUND'))">
            <h2> The requested page is not found </h2>
        </xsl:if>
        <xsl:if test="$errorMessage= 'PAGE_NOT_AVAILABLE_IN_LANGUAGE'">
            <h2> Page does not exist in language </h2>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

$CONTEXT{parameters.customeErrorMessage}
找不到请求的页面
语言中不存在页面
输出

<h1>PAGE_NOT_FOUND</h1>
PAGE\u未找到

首先,我希望看到测试
test=“$errorMessage='PAGE\u NOT\u FOUND'”
而不是
test=“(contains($errorMessage,'PAGE\u NOT\u FOUND'))”
。但这可能解决不了问题


样式表显然依赖于一些非标准机制来评估
$CONTEXT{parameters.customeErrorMessage}
,我不熟悉这种机制——您需要告诉我们更多关于您正在使用的处理器和执行它的环境的信息。我怀疑这个表达式返回的是某种Java对象,其行为与XPath字符串不同;具体来说,
xsl:value of
输出对象的字符串表示形式,但是
contains()
函数没有以相同的方式将其转换为字符串。但是这是一种推测。

你能添加一个
$errorMessage
输出的示例吗?用output更新了帖子这到底是哪个XSLT处理器?Java端有什么样的数据类型?Java值如何转换为XSLT/XPath值?看起来文本不是作为字符串从Java接收的。我刚刚尝试使用“”并将字符串“PAGE_NOT_FOUND”的输出值从14改为40。在XSLT中是否有转换为字符串的选项?Martin和我都解释过,为了进一步帮助您,我们需要知道您使用的是什么技术,以及数据是如何从Java传递到XSLT的。