xquery选择有关时间或日期的请求

时间:2015-09-01 14:12:26

标签: xml xquery basex

我想问一下如何使用xquery

仅选择符合时间限制的节点

例如我有这个xml

<SensorList>
    <Sensor>
      <SensorID>1</SensorID>
      <SensorFeature>vox</SensorFeature>
      <SensorTime>20:45:00</SensorTime>
    </Sensor>
    <Sensor>
      <SensorID>4</SensorID>
      <SensorFeature>vox</SensorFeature>
      <SensorTime>14:00:00</SensorTime>
    </Sensor>
    <Sensor>
      <SensorID>2</SensorID>
      <SensorFeature>ax</SensorFeature>
      <SensorTime>12:00:00</SensorTime>
    </Sensor>
  </SensorList>

我想只选择SensorTime值大于15:00:00的传感器节点 那可能吗 如果时间阈值对应于sensortime变量,那么命令是这样的吗?

doc('vagelisdb/CIDEM.xml')/SensorList/Sensor/SensorTime[SensorTime>'15:00:00']

1 个答案:

答案 0 :(得分:4)

假设您的传感器时间是有效的xs:time数据类型,那么您需要像这样调整XPath:

doc('vagelisdb/CIDEM.xml')/SensorList/Sensor[xs:time(SensorTime) gt xs:time("15:00:00")]

这将选择符合您时间条件的sensor个节点。请注意,在您的示例中,您有/SensorTime[SensorTime,这意味着元素SensorTime有一个名为SensorTime的孩子;这与您的示例XML不匹配。

如果你想比较时间,那么你需要xs:time构造函数(或强制转换),这样就不会将它们作为字符串进行比较。