0

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

4

1 回答 1

2

由于在 XPath 1.0(我假设您正在使用)中没有日期类型的概念,您必须将日期字符串转换为数字(字符串不能与 <、<=、> 或 => 进行比较)。您可以20130608直接在 XML 中写入日期值,也可以使用该translate函数删除比较中的破折号。

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

//Row[@type='apple' and @transactiontype='buy' and 
  (translate(@date, '-', '') >= 20130606 and 
   translate(@date, '-', '') <= 20130608)]/attribute::price
于 2013-06-09T10:07:01.090 回答