xpath过滤计算值

时间:2015-05-28 08:50:16

标签: xml xpath calculated-columns

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

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

/node[price_from != price]

然而,我真正需要做的是过滤折扣超过30%的产品。根据我的发现,似乎Xpath可以处理计算,但我无法找到基于计算值进行过滤的示例。

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

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

有人知道上述类型的表达是否完全可能?我只能使用Xpath进行过滤,而且我无法控制Feed,因此我无法在包含折扣百分比之前添加列。

2 个答案:

答案 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]