Xpath - 获取每个元素的最大属性

时间:2013-06-03 09:13:19

标签: xpath xpath-2.0

鉴于以下XML,什么Xpath 2.0查询将获得每个联系人的最大日期?我的目标是找到30天内未被触及的联系人。

<contacts>
  <contact>
    <name>james</name>
    <touch method='email' date='2002-02-04'>a</touch>
    <touch method='meeting' date='2010-02-04'>b</touch>
  </contact>
  <contact>
    <name>bob</name>
    <touch method='phone' date='2001-02-04'>y</touch>
    <touch method='email' date='2009-02-04'>d</touch>
  </contact>
  <contact>
    <name>cindy</name>
    <touch method='email' date='2012-02-04'>v</touch>
    <touch method='phone' date='2012-02-04'>h</touch>
  </contact>
  <contact>
    <name>john</name>
  </contact>
</contacts>

max((//@date/xs:dateTime(.)))会给我一个最长的约会日期,但我正在尝试获得三个约会。

2 个答案:

答案 0 :(得分:4)

更简单的版本。

对于节点序列,您通常不需要返回,因为/是相同的。

/contacts/contact/max(.//@date/xs:dateTime(.))

并在限制之前找到联系人:

/contacts/contact[max(.//@date/xs:dateTime(.)) < '2013-05-04']

答案 1 :(得分:1)

使用for,因为您希望获得每个联系人的最大值

for $x in /contacts/contact return max($x//@date/xs:dateTime(.))