2015-05-28 1 views
0

Я использую Xpath для фильтрации корма, который загружается на мой сайт каждый день.xpath filter на вычисленное значение

Корма - это простой CSV со списком продуктов. Для того, чтобы загрузить только те продукты, которые имеют скидку я использую следующее выражение Xpath:

/node[price_from != price] 

Однако то, что мне действительно нужно сделать, это фильтр на продукты, которые имеют скидку более чем на 30%. Из того, что я могу найти, кажется, что Xpath может обрабатывать вычисления, но я не смог найти пример, где был создан фильтр на основе рассчитанного значения.

В основном я ищу выражение, которое будет делать это (это не работает, хотя):

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

Кто-нибудь знает, если выше тип выражения вообще возможно? Я могу использовать только Xpath для фильтрации, и у меня нет контроля над фидом, поэтому я не могу добавить столбец, прежде чем он содержит процент скидки.

ответ

0

Вы можете найти документацию для операторов here

Кроме того, вы должны убедиться, что атрибут или значение узла является числом (вы можете использовать number() функции, чтобы бросить)

Я считаю, что то, как это будет работать

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

Это сработало, спасибо. Мне не нужно было указывать номер, но мне пришлось изменить 0,7 на 0,7 и из-за различной нотации. – Wouter

1

Оператор для деления по xpath равен div, а не / (помните, что / уже используется для разделителя путей в xpath). Таким образом, вы должны быть в состоянии сделать следующее:

/node[(price div price_from) < 0.7] 

От W3C XPath 1.0 спецификации:

Оператор div выполняет деление с плавающей точкой в ​​соответствии с IEEE 754.

The mod оператор возвращает остаток от усеченного деления.

+1

Это более полезный ответ и должен быть принят. –