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

时间:2019-04-25 19:19:32

标签: xml xslt xslt-2.0

我需要为变量设置一个值,该变量将保存接受某些条件的特定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>

如何绕过这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

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

对于未定义的变量,这样的问题与变量的值无关。您可能有一个范围界定问题,但是如果没有更多背景信息,我们将无法评估。

1 感谢Michael Kay的更正。