XSLT中for-each内用Count()统计接口出现次数遇0值问题求助
XSLT统计接口用例出现次数问题解决
你的核心问题是上下文切换错误:当你在<xsl:for-each select="$interface_list/header_xml/interface">循环中时,当前上下文是interface_list.xml文档的节点,此时用//testcase会在这个外部文档里查找节点,自然找不到主文档中的testcase,所以统计结果始终为0。
修正方案
提前将主文档中需要检查的节点存入变量,在循环外部文档节点时直接引用该变量,彻底规避上下文冲突:
<!-- 提前存储主文档中所有需要检查的extendedinfo节点 --> <xsl:variable name="main_extended_nodes" select="/testmodule/testgroup/testcase/extendedinfo" /> <xsl:variable name="interface_list" select="document('interface_list.xml')" /> <xsl:for-each select="$interface_list/header_xml/interface"> <!-- 直接获取当前接口名称,无需额外value-of转换 --> <xsl:variable name="current_interface" select="."/> <tr> <td class="NumberCell" width="60"> <!-- 引用预存的主文档节点进行统计 --> <xsl:value-of select="count($main_extended_nodes[contains(., $current_interface)])"/> </td> </tr> </xsl:for-each>
说明
$main_extended_nodes变量一次性抓取主文档中所有extendedinfo节点,后续循环无需再切换上下文查找- 直接用
select="."获取当前接口名称,比<xsl:value-of>更简洁高效 - 按你的示例数据运行,会得到正确结果:
- 12345:2次
- 654321:2次
- 123654:2次
- 112233:0次
内容的提问来源于stack exchange,提问作者Tomek Wojcik
相关产品推荐
相关产品推荐

