Bu sorunu çok fazla bir zorunluluk açısından yaklaşıyorsunuz.
XQuery'de değişkenlerin değerlerini ayarlayabilirsiniz, ancak bunları hiçbir zaman değiştiremezsiniz.
yinelemeli tipi algoritmalar yapmak için doğru bir şekilde özyinelemeli fonksiyonu ile:
declare funciton local:most($sequence, $index, $value, $count)
{
let $current=$sequence[$index]
return
if (empty($current))
then $value
else
let $current-count = count(index-of($current, $sequence))
return
if ($current-count > $count)
then local:most($sequence, $index+1, $current, $current-count)
else local:most($sequence, $index+1, $value, $count)
}
ancak sorunun yaklaşan daha iyi bir yolu yinelemeli olmayan bir şekilde sorunu tarif gereğidir. Sıranızdaki tüm farklı değerler için bu durumda, herhangi bir farklı değerin maksimum sayısını belirten birini istiyorsunuz. , Dec. 2015
for $maxFreq in
max(for $val in distinct-values($sequence)
return count(index-of($sequence, $val))
)
return
distinct-values($sequence)[count(index-of($sequence, .)) eq $maxFreq]
Güncelleme: XQuery çevrilmiş
önceki sentance
let $max-count := max(for $value1 in distinct-values($sequence)
return count(index-of($sequence, $value1)))
for $value2 in distinct-values($sequence)
where (count(index-of($sequence, $value2)) = $max-count
return $value2
Yine güzel soru (+1). Ve cevap, bir XPath tek katlı ifadesi ... daha da kısaltmaya çalışacak. –