我需要为一个变量设置一个值,该变量将保存接受某些条件的特定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>
我该如何绕过这个问题?
在XSLT 2.0中,您的变量将被设置为具有单个文本节点子节点的文档节点,其字符串值为从1到XPath1所选项目数的整数的串联 - 可能不是您想要的。
如果你想“节点计算特定的xpath”,只需直接使用count()
函数:
<xsl:variable name="Bondscounter"
select="count(//Bonds_RepoSecuSched_List/Bonds_RepoSecuSched[ISINCode!=''])/>
对于未定义的变量,这样的问题与变量的值无关。您可能遇到了范围问题,但如果没有更多上下文,我们无法对此进行评估。
1感谢Michael Kay的更正。