如何处理变量未定义的问题

问题描述 投票:1回答:1

我需要为一个变量设置一个值,该变量将保存接受某些条件的特定xpath的节点数。之后,我需要使用这个值。问题是如果条件从未被接受,则不会定义变量,并且在我尝试使用它时会出现错误。

<xsl:variable name="Bondscounter">
        <xsl:for-each select="//Bonds_RepoSecuSched_List/Bonds_RepoSecuSched[ISINCode != ''] ">
            <xsl:value-of select="position()" />
        </xsl:for-each>
    </xsl:variable>

我该如何绕过这个问题?

xml xslt xslt-2.0
1个回答
1
投票

在XSLT 2.0中,您的变量将被设置为具有单个文本节点子节点的文档节点,其字符串值为从1到XPath1所选项目数的整数的串联 - 可能不是您想要的。

如果你想“节点计算特定的xpath”,只需直接使用count()函数:

<xsl:variable name="Bondscounter"
     select="count(//Bonds_RepoSecuSched_List/Bonds_RepoSecuSched[ISINCode!=''])/>

对于未定义的变量,这样的问题与变量的值无关。您可能遇到了范围问题,但如果没有更多上下文,我们无法对此进行评估。

1感谢Michael Kay的更正。

© www.soinside.com 2019 - 2024. All rights reserved.