计算值的 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]
我正在使用 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]