Xpath包含带有字符串X或Y的属性A,并包含带有字符串Z的属性B.

时间:2013-06-09 05:36:45

标签: xml xpath contains

这是XML结构

<Row type='apple' price='1' quantity='6' date='2013-06-08' transactiontype='sell'/>
<Row type='apple' price='1.5' quantity='3' date='2013-06-07' transactiontype='buy'/>
<Row type='apple' price='1.4' quantity='2' date='2013-06-05' transactiontype='buy'/>
<Row type='orange' price='4' quantity='5' date='2013-06-05' transactiontype='sell'/>

我当前的查询是

//row[@type='apple' and @transactiontype='buy']/attribute::price

但是这个查询不允许我选择日期范围。如果我想允许2013-06-06和2013-06-08之间的所有交易日期,我将如何编辑我的查询?

1 个答案:

答案 0 :(得分:2)

由于XPath 1.0中没有日期类型的概念(我假设你正在使用),你必须将日期字符串转换为数字(字符串不能与&lt;,&lt; =,&gt;或=&gt )。您可以直接在XML中将日期值写为20130608,也可以使用translate函数删除比较中的短划线。

第二个选项的工作XPath表达式可能如下所示:

//Row[@type='apple' and @transactiontype='buy' and 
  (translate(@date, '-', '') >= 20130606 and 
   translate(@date, '-', '') <= 20130608)]/attribute::price