首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么xsl:when和xsl:value-of不能在这里工作?

为什么xsl:when和xsl:value-of不能在这里工作?
EN

Stack Overflow用户
提问于 2019-08-08 01:49:54
回答 1查看 49关注 0票数 1

XSLT中的choose-when-test构造没有按照我所认为的方式工作。实际上,它似乎并没有做任何事情。

环境是Workday Studio。我正在对一个几个月来每晚都在运行的程序进行更改。这段代码中的结构与代码的其他部分非常相似,这就是为什么这令人费解的部分原因。

代码语言:javascript
复制
<xsl:variable name="CC_Fee_Calc">
    <xsl:value-of select="number($value_from_salesforce) * number($CreditCard_RecoveryFee_Percent) * 0.01"/>
</xsl:variable>
<xsl:variable name="CC_Fee_IsZero">
    <xsl:choose>
        <xsl:when test="number($CC_Fee_Calc) &lt; 0.0">
            <xsl:value-of select="Y"/> 
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="N"/> 
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable> 

<CC_Fee_Calc><xsl:value-of select="$CC_Fee_Calc"/></CC_Fee_Calc>
<CC_Fee_Zero><xsl:value-of select="$CC_Fee_IsZero"/></CC_Fee_Zero>

请注意,由于<的XML性质,因此必须使用小于号XSLT的HTML版本(第6行)。同样的事情在代码的其他地方也可以很好地工作。

最后两行仅用于显示变量的内容。他们在日志中创建以下输出(针对不同的输入数据):

代码语言:javascript
复制
<CC_Fee_Calc>150.432</CC_Fee_Calc>
<CC_Fee_Zero/>

<CC_Fee_Calc>-0.632</CC_Fee_Calc>
<CC_Fee_Zero/>

<CC_Fee_Calc>-1</CC_Fee_Calc>
<CC_Fee_Zero/>

CC_Fee_Calc字段中的值是正确的。但对于CC_Fee_Zero来说,就好像只是定义变量,而不是填充变量。我期望第一个示例为N,其他两个示例为Y。

EN

回答 1

Stack Overflow用户

发布于 2019-08-08 03:19:26

对代码的另一个有用的简化是替换

代码语言:javascript
复制
<xsl:variable name="CC_Fee_Calc">
    <xsl:value-of select="number($value_from_salesforce) * number($CreditCard_RecoveryFee_Percent) * 0.01"/>
</xsl:variable>

通过

代码语言:javascript
复制
<xsl:variable name="CC_Fee_Calc" 
  select="number($value_from_salesforce) * number($CreditCard_RecoveryFee_Percent) * 0.01"/>

第二个版本计算一个数字并将其绑定到变量。您的版本计算一个数字,将其转换为字符串,创建一个包含此字符串的文本节点,创建一个文档节点作为此文本节点的父节点,并将其绑定到变量。然后,当您执行number($CC_Fee_Calc)时,它必须找到文档节点的字符串值,这意味着导航到文本节点,从文本节点提取字符串,并将其转换回数字。这样你就可以写三行代码,而不是一行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57399825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档