如何在XPATH中乘以值?

时间:2013-02-19 13:49:33

标签: xml xpath

假设我有一堆

<item price='n' sold='m'>
...
</item>

我想在每件商品上出售价格*。我正在尝试

'//item/(@price * @sold)' 

来自python中的lxml,但我不断收到错误'Invalid Expression'。 xmllint命令也是如此。 但是相同的查询在Oxygen xml编辑器中有效。

如何使这项工作?

2 个答案:

答案 0 :(得分:5)

您正在使用的XPath表达式需要XPath 2.0。 (您可以通过将XPath版本设置为1.0并再次尝试查询来验证Oxygen。)我认为lxml不支持XPath 2.0。

如果您无法获得支持XPath 2.0的库,那么您需要执行以下操作,而不是尝试在XPath中完成所有操作:

  • 选择XPath中的<item>元素,例如使用XPath表达式//item
  • 在Python中循环遍历这些元素
  • 在每个<item>元素的上下文中,评估XPath表达式@price * @sold

答案 1 :(得分:0)

计算可以在XPath 2.0中完成,因为我已经更正了!

如果您想选择价格低于或等于售价时间2的所有商品,则可以选择。见下: http://en.wikipedia.org/wiki/XPath#Number_functions