How do you identify duplicate values in a numerical sequence using XPath 2.0?
Solution 1:
Use this simple XPath 2.0 expression:
$vSeq[index-of($vSeq,.)[2]]
where $vSeq
is the sequence of values in which we want to find the duplicates.
For explanation of how this "works", see:
http://dnovatchev.wordpress.com/2008/11/16/xpath-2-0-gems-find-all-duplicate-values-in-a-sequence-part-2/
TLDR; This picture can be a visual explanation.
If the sequence is:
$vSeq = 1, 2, 3, 2, 4, 5, 6, 7, 5, 7, 5
Then evaluating the above XPath expression produces: 2, 5, 7
Solution 2:
What about:
distinct-values(
for $item in $seq
return if (count($seq[. eq $item]) > 1)
then $item
else ())
This iterates through the items in the sequence, and returns the item if the number of items in the sequence that are equal to that item is greater than one. You then have to use distinct-values()
to remove the duplicates from that list.