我需要为变量设置一个值,该变量将保存接受某些条件的特定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>
如何绕过这个问题?
答案 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的更正。