Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Xml 为什么xsl:when和xsl:value在这里不起作用?_Xml_Testing_Xslt - Fatal编程技术网

Xml 为什么xsl:when和xsl:value在这里不起作用?

Xml 为什么xsl:when和xsl:value在这里不起作用?,xml,testing,xslt,Xml,Testing,Xslt,当XSLT中的-测试构造没有按我认为应该的方式运行时,选择-。实际上,它似乎什么也没做 环境是Workday Studio。我正在对一个已经每晚运行了几个月的程序进行修改。这段代码中的结构与代码的其他部分非常相似,这就是为什么这令人困惑的部分原因 <xsl:variable name="CC_Fee_Calc"> <xsl:value-of select="number($value_from_salesforce) * number($CreditCard_Recov

当XSLT中的-
测试
构造没有按我认为应该的方式运行时,
选择
-
。实际上,它似乎什么也没做

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

<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>

请注意,小于号
的HTML版本会发生更改

        <xsl:value-of select="Y"/> 

功劳:感谢您提出的简化建议。

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

<xsl:variable name="CC_Fee_Calc">
    <xsl:value-of select="number($value_from_salesforce) * number($CreditCard_RecoveryFee_Percent) * 0.01"/>
</xsl:variable>



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

当我吹毛求疵时:
0.0
是写
0
的冗长方法。
        <xsl:value-of select="'Y'"/> 
    <xsl:when test="number($CC_Fee_Calc) &lt; 0.0">Y</xsl:when>
    <xsl:otherwise>N</xsl:otherwise>
<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_Calc" 
  select="number($value_from_salesforce) * number($CreditCard_RecoveryFee_Percent) * 0.01"/>