检查节点是否为空,如果为空则设置为值

时间:2016-06-28 17:47:25

标签: xslt xslt-1.0

以下是我的代码。基本上,问题是我需要能够检查节点,如果它是空白,则将其设置为0,但如果它有值,则将其设置为该值。然后我需要对它做数学(减去值)。以下是我尝试过的,但我收到错误"变量参数' quantAvail'要么未定义,要么超出范围。"我不确定如何解决这个问题?

<xsl:choose>
                <xsl:when test="quantitybackordered=''">
                    <xsl:variable name="quantBackOrdered" select="0"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:variable name="quantBackOrdered" select="quantitybackordered"/>
                </xsl:otherwise>
            </xsl:choose>

            <xsl:choose>
                <xsl:when test="locationquantityavailable=''">
                    <xsl:variable name="quantAvail" select="0"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:variable name="quantAvail" select="locationquantityavailable"/>
                </xsl:otherwise>
            </xsl:choose>

            <xsl:choose>
                <xsl:when test="inventoryLocation_internalid='18'">
                    <xsl:variable name="quantTotal" select="$quantAvail - $quantBackOrdered"/> <!-- Error on this line -->
                    <xsl:value-of select="$quantTotal"/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:variable name="test" select="locationquantityavailable"/>
                    <xsl:choose>
                        <xsl:when test="$test=''">
                            <xsl:text>0</xsl:text>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="locationquantityavailable"/>
                        </xsl:otherwise>
                    </xsl:choose>
                </xsl:otherwise>
            </xsl:choose>

1 个答案:

答案 0 :(得分:-1)

如果没有看到上下文(输入和样式表的其余部分),建议很难,但我相信你可以将问题中的部分重写为:

<xsl:variable name="quantBackOrdered">
    <xsl:choose>
        <xsl:when test="quantitybackordered=''">0</xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="quantitybackordered" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>

<xsl:variable name="quantAvail">
    <xsl:choose>
        <xsl:when test="locationquantityavailable=''">0</xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="locationquantityavailable" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>

<xsl:choose>
    <xsl:when test="inventoryLocation_internalid='18'">
        <xsl:value-of select="$quantAvail - $quantBackOrdered"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="$quantAvail"/>
    </xsl:otherwise>
</xsl:choose>