如何使用XPath 2.0识别数字序列中的重复值?

12 xml xpath xpath-2.0

我有一个XPath表达式,它提供了一系列值,如下所示:

1 2 2 3 4 5 5 6 7

这是很容易将其转换为一组唯一值的1 2 3 4 5 6 7使用distinct-values().但是,我想要提取的是重复值列表= 2 5.我想不出一个简单的方法来做到这一点.有人可以帮忙吗?

Dim*_*hev 17

使用这个简单的XPath 2.0表达式:

$vSeq[index-of($vSeq,.)[2]]
Run Code Online (Sandbox Code Playgroud)

在哪里$vSeq是我们想要找到重复项的值序列.

有关此"如何工作"的说明,请参阅:

http://dnovatchev.wordpress.com/2008/11/16/xpath-2-0-gems-find-all-duplicate-values-in-a-sequence-part-2/

TLDR; 这张照片可以是一个直观的解释.

如果顺序是:

$vSeq  =  1,   2,   3,   2,   4,   5,   6,   7,   5,   7,   5
Run Code Online (Sandbox Code Playgroud)

然后评估上面的XPath表达式产生: 2, 5, 7


在此输入图像描述

  • 非常好.我经常忽略index-of()函数. (3认同)

小智 0

计算原始值集和不同值集之间的差异。这是多次出现的一组数字。请注意,如果此结果集中的数字在原始序列中出现两次以上,则它们不一定是不同的,因此如果需要,请再次转换为一组不同的值。