这是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之间的所有交易日期,我将如何编辑我的查询?
答案 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