在这种情况下的Xpath查询 - 分组值?

时间:2014-02-20 22:56:40

标签: xml xpath xpath-2.0

如果我有这个XML:

<Events>
    <Properties>
      <Property Descriptor="100">1377349460.298</Property>
      <Property Descriptor="101">1</Property>
      <Property Descriptor="24000">C1234Test1</Property>
    </Properties>
    <Properties>
      <Property Descriptor="100">1377349462.298</Property>
      <Property Descriptor="101">1</Property>
      <Property Descriptor="24000">C4321Test2</Property>
    </Properties>
    <Properties>
      <Property Descriptor="100">1377349462.300</Property>
      <Property Descriptor="101">1</Property>
      <Property Descriptor="24000">C1234Test1</Property>
    </Properties>
</Events>

如果仅考虑此属性的前5个字符,如何仅针对每个Descriptor="100"的第一次出现选择Descriptor="24000"?例如,仅选择1377349460.298 [用于C1234]和1377349462.298 [用于C4321]?

Xpath 2.0

我不知道如何尝试......

提前致谢!

1 个答案:

答案 0 :(得分:2)

找到所有匹配的标识符,然后为每个标识符找到第一个结果。

for $id in distinct-values(//Property[@Descriptor=24000]/substring(., 1, 4))
return
  //Properties[Property[@Descriptor=24000 and starts-with(., $id)]][1]
      /Property[@Descriptor=100]