2 つのバリアントを提案します。1 つは group by 句を含み、グループ化されていない変数 $cntr に必要な特性をたまたま示しています ( http://www.w3.org/TR/xquery-30/#id-group-を参照)。グループ化の実行方法の詳細について):
let $seq := ("B", "B","B","A","C","A")
let $cntr := 1
for $it in $seq
group by $it
return <el>{
attribute num {count($cntr)},
$it
}</el>
私の2番目の、おそらくより明白なバリアントは次のとおりです。
let $seq := ("B", "B","B","A","C","A")
for $v in distinct-values($seq)
return <el>{
attribute num {count($seq[. = $v])},
$v
}</el>
私の答えは少し不正確だったので、ディミトレ・ノヴァチェフの答えに触発されたマイナーな修正がここにあります。
使用する代わりに:
for $v in distinct-values($seq)
あなたも使うかもしれません
for $v in ("A", "B", "C") (: this is sequence 1 as stated in the question:)
これは、質問の 2 つのシーケンスによりよく似ています。このシーケンスには個別の値のみが含まれているためです。