You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的XSLT counter变量未更新?无法统计价格≥100的商品数量

问题原因

  • XSLT中的变量是不可变的,一旦声明赋值就不能修改。你在<xsl:if>块内重新声明的counter变量仅在局部作用域有效,循环外完全无法访问,不可能实现累加效果。
  • 声明pr变量时使用了//price,会匹配文档中所有的price节点,而非当前循环到的product下的单个price节点,判断条件逻辑完全错误。
  • counter变量声明在for-each循环内部,每次循环都会被重置为0,即便变量可变也无法得到正确结果。
  • 若XSLT直接输出纯代码,通常是缺少XSLT根元素、命名空间声明,或XML引用XSLT的路径配置错误导致的。

正确实现

统计符合条件的节点数量无需手动循环累加,直接用count()函数即可实现:

<!-- 先确保XSLT文件有正确的根元素和命名空间 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
        <body>
            <!-- 直接统计price>=100的product节点数量 -->
            <span class="text"> Total Products(price>=100):<xsl:value-of select="count(//product[price >= 100])"/>  </span>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

上述代码统计结果为3,和XML中符合条件的商品数量一致。

内容的提问来源于stack exchange,提问作者maryam mohammadbagheri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:57:02