如何使用选择和

时间:2015-12-17 17:00:00

标签: xslt xslt-1.0

我正在尝试围绕计算出的变量值构建一些规则,但是如果使用其中一个或两个条件,我很难让规则与返回false的输出一起使用。我需要使用两个合格标准,但在bug测试过程中单独尝试每个参数。

我有一个名为“计算”的变量。但是,当应用折扣金额时,我不希望计算值低于301.12。然而,这仅在应用折扣金额时才是这种情况。如果计算的值低于301.12而没有折扣,那么这是可以的,并且较低的值是可接受的。

然而,正在发生的是在运行流程后仍然返回折扣后的较低值。

非常感谢所有帮助。

这是我的代码:

        <xsl:variable name="discountAmount">
          <xsl:choose>
           <xsl:when test="@affiliateID='12345'">50</xsl:when>
           <xsl:otherwise>0</xsl:otherwise>
          </xsl:choose>
         </xsl:variable>
        <xsl:variable name="feeAmount">
          <xsl:choose>
           <xsl:when test="@affiliateID='12345'">25</xsl:when>
           <xsl:otherwise>50</xsl:otherwise>
          </xsl:choose>
         </xsl:variable>
        <xsl:variable name="grossAmount" select="format-number(db1:grossPremium, '#0.00')" />
        <xsl:variable name="discountGiven" select="($grossAmount - $feeAmount) div 100 * $discountAmount" />
        <xsl:variable name="calculation" select="($grossAmount - $discountGiven)" />
        <xsl:choose>
            <xsl:when test="$discountAmount &gt; 0">
                <xsl:choose>
                     <xsl:when test="$calculation &lt; 301.12"> 
                        <xsl:value-of select="$calculation=301.12" />
                    </xsl:when>
                </xsl:choose>
            </xsl:when>
        </xsl:choose>

1 个答案:

答案 0 :(得分:0)

您无法更改XSLT中的变量值。试试这样:

<xsl:variable name="calc0" select="($grossAmount - $discountGiven)" />
<xsl:variable name="calculation">
  <xsl:choose>
    <xsl:when test="$discountAmount &gt; 0 and $calc0 &lt; 301.12">
      301.12
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$calc0" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>