我正在使用Xpath过滤每天上传到我网站的产品Feed。
Feed是一个包含产品列表的简单CSV。要仅加载具有折扣的产品,我使用以下Xpath表达式:
/node[price_from != price]
然而,我真正需要做的是过滤折扣超过30%的产品。根据我的发现,似乎Xpath可以处理计算,但我无法找到基于计算值进行过滤的示例。
基本上我正在寻找一个可以做到这一点的表达式(虽然这不起作用):
/node[(price / price_from) < 0,7]
有人知道上述类型的表达是否完全可能?我只能使用Xpath进行过滤,而且我无法控制Feed,因此我无法在包含折扣百分比之前添加列。
答案 0 :(得分:1)
xpath中除法的运算符为/
,而不是/
(请记住/node[(price div price_from) < 0.7]
已用于xpath中的路径分隔符)。所以你应该能够做到以下几点:
div
来自W3C xpath 1.0规范:
mod
运算符根据IEEE 754执行浮点除法。
struct filters{ struct inclusions{ struct filename{ int flag; int rg_count; struct letter_range{ char l, u; }*l_rg; struct name_range{ char *l, *u; }*n_rg; char *l_specf; int n_specf_count; char **n_specf; }fn; struct extension{ int flag;c int rg_count; struct letter_range{ char l, u; }*l_rg; struct name_range{ char *l, *u; }*n_rg; char *l_specf; int e_specf_count; char **e_specf; }fe; struct size{ int flag; int rg_count; struct size_range{ unsigned long lower; unsigned short int suffix_l; unsigned long upper; unsigned short int suffix_u; }*rg; struct specf{ unsigned long specific; unsigned short int suffix_s; }*sp; }fs; }in; struct exclusions{ struct filename{ int flag; int rg_count;y struct letter_range{ char l, u; }*l_rg; struct name_range{ char *l, *u; }*n_rg; char *l_specf; int n_specf_count; char **n_specf; }fn; struct extension{ int flag; int rg_count; struct letter_range{ char l, u; }*l_rg; struct name_range{ char *l, *u; }*n_rg; char *l_specf; int e_specf_count; char **e_specf; }fe; }ex;
运算符返回截断分区的余数。
答案 1 :(得分:0)
您可以找到运营商here
的文档此外,您需要确保属性或节点值是数字(您可以使用number()
函数进行投射)
我相信这样的事情会起作用
/node[(price div price_from) < 0,7]