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

XSL for-each select子句数值大小条件筛选结果异常问题

问题原因

你的XPath筛选逻辑失效有两个核心原因:

  • 你将PRICE的值和字符串'100'、'50'做比较,XPath中带引号的内容会被识别为字符串,字符串的字典排序规则和数字完全不同,比如字符串'90'的首字符9比'100'的首字符1大,就会判定'90' > '100'为真,导致价格为90的商品也被错误匹配到筛选条件。
  • 相对路径.//PRICE是递归查找所有后代节点的PRICE,如果单个Product下存在多个PRICE节点,只要有任意一个满足条件就会匹配,如果你确认每个Product下只有一个PRICE节点,这个点可以暂时不调整,写全明确路径会更稳妥。

修复后的代码

把比较值的引号去掉,转为数字比较即可,修复后的for-each代码如下:

<xsl:for-each select=".//G_1/Product[.//PRICE > 100 or .//PRICE < 50 ]"><?PRICE?></xsl:for-each>

如果要更严谨避免多PRICE节点的匹配问题,可以写全明确路径:

<xsl:for-each select=".//G_1/Product[Rec/Rec1/Rec_Detail/PRICE > 100 or Rec/Rec1/Rec_Detail/PRICE < 50 ]"><?PRICE?></xsl:for-each>

按照你给出的XML示例,修复后只会匹配到价格为200的第一个商品,价格为90的第二个商品会被正确过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:06:03