计算值的 xpath 过滤器

xpath filter on calculated value

我正在使用 Xpath 过滤每天上传到我网站的产品 Feed。

Feed 是一个包含产品列表的简单 CSV 文件。要仅加载有折扣的产品,我使用以下 Xpath 表达式:

/node[price_from != price]

然而,我真正需要做的是过滤掉折扣超过 30% 的产品。据我所知,Xpath 似乎可以处理计算,但我还没有找到一个基于计算值进行筛选的示例。

基本上我正在寻找一个可以做到这一点的表达式(虽然这不起作用):

/node[(price / price_from) < 0,7]

有人知道上述类型的表达式是否完全可行吗?我只能用Xpath来过滤,我无法控制feed,所以我不能在包含折扣百分比的列之前添加。

xpath 中的除法运算符是 div,而不是 /(请记住,/ 已用于 xpath 中的路径分隔符)。所以你应该能够做到以下几点:

/node[(price div price_from) < 0.7]

来自 W3C xpath 1.0 规范:

The div operator performs floating-point division according to IEEE 754.

The mod operator returns the remainder from a truncating division.

您可以找到运算符的文档here

另外,您需要确保属性或节点值是数字(您可以使用number()函数来转换)

我相信这样的事情会奏效

/node[(price div price_from) < 0,7]