3

给定以下 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(.)))会给我一个最大的约会,但我试图得到三个约会。

4

2 回答 2

4

更简单的版本。

对于节点序列,您通常不需要 for-in-return,因为 / 也是如此。

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

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

/contacts/contact[max(.//@date/xs:dateTime(.)) < '2013-05-04']
于 2013-06-03T13:06:41.910 回答
1

使用你想获得每个联系人for的最大值

for $x in /contacts/contact return max($x//@date/xs:dateTime(.))
于 2013-06-03T09:39:02.857 回答