The test data is regenerated for each script so the outputs are not the same.
let $n := 1000 let $max := 500 return for $i in (1 to $max) return xs:string(xs:integer(util:random() * $n))
let $values := $context let $distinctvalues := distinct-values($values) let $duplicates := for $value in $distinctvalues return if (count(index-of($values, $value)) > 1) then $value else () return $duplicates
656 305 200 567 825 262 636 60 292 625 644 413 922 899 500 898 995 535 836 772 807 273 474 881 214 573 402 51 124 368 304 449 724 665 4 977 20 610 861 609 67 612 216 115 965 375 114 506 289 597 501 704 775 979 630 910 35 359 183 21 661 877 499 195 47 961 466 516 678 288 362 300 171 942 212 191 691 638 321 575 622 468 447 372 933 179 568 541 523 589 205 72 694
let $values := $context let $distinctvalues := distinct-values($values) let $duplicates := for $value in distinct-values($values) return if (count($values[.=$value]) gt 1) then $value else () return $duplicates
241 37 680 618 767 326 995 99 438 754 27 61 807 609 141 442 651 474 314 772 800 769 265 676 381 334 677 721 726 401 881 937 518 56 780 924 776 253 180 757 961 190 424 891 840 885 505 354 553 229 971 982 679 491 636 683 798 875 200 386 510 84 910 82 935 969 701 364 686 599 717 980 546 519 79 658 736 991 149 468 843 826 22 270 972 835 393
let $values := $context let $duplicates := $values[index-of($values, .)[2]] return $duplicates
255 405 58 279 950 554 825 776 449 264 52 95 184 143 989 899 861 980 757 315 683 574 796 159 3 75 108 920 56 624 8 47 341 455 701 145 88 11 868 625 571 227 77 903 430 827 597 789 415 365 999 372 853 285 619 94 709 384 935 392 335 303 720 499 812 809 951 31 908 552 260 41 383 297 30 508 612 42 909 169 787 539
let $values := $context let $duplicates := distinct-values( for $value in $values return if (count($values[. eq $value]) > 1) then $value else () ) return $duplicates
956 765 971 92 505 411 600 203 894 295 75 461 359 889 163 431 691 920 713 492 655 49 922 880 815 466 695 566 183 650 499 405 283 381 961 254 977 105 738 522 137 302 877 343 550 313 740 340 2 909 164 941 793 502 34 223 914 705 507 221 544 653 571 355 290 300 701 301 573 974 728 166 436 402 774 565 749 758 178 488 836 578 182 551 339 825 983 943 947 344 831 548 779 980 494 247 518 323
as suggested by Wolfgang - requires XQuery 3.0.
let $values := $context let $duplicates := for $value in $values group by $key := $value return $value[2] return $duplicates
74 223 808 558 316 46 433 183 409 276 522 369 248 365 458 878 148 991 846 88 237 596 84 818 814 564 899 810 286 496 504 714 4 928 557 795 803 432 646 949 336 703 453 941 211 635 514 264 990 591 414 902 108 7 76 802 552 645 488 734 363 335 299 545 388 876 513 118 114 840 937 816 562 776 744 228 103 317 338 705 213 786 306 544 879 32 593 722 819 960 198 682 658 287 892 134 501