次のエントリを含む XML ファイルがあります。
<file>
<unit id="u-1.01"/>
<unit id="u-1.02"/>
<unit id="u-1.03"/>
<unit id="u-1.04"/>
<unit id="u-1.05"/>
<unit id="u-1.06"/>
<unit id="u-1.07"/>
<unit id="u-2.01"/>
<unit id="u-2.02"/>
<unit id="u-2.03"/>
<unit id="u-2.04"/>
<unit id="u-2.05"/>
<unit id="u-2.06"/>
</file>
以下のクエリを使用して、個別値の数を数えたいと思います。
クエリは、各@id属性を調べて、文字列の 3 番目の文字を選択します。
declare function local:count-base-pages($basefile) {
for $identifiers in $basefile/unit/@id
let $id := distinct-values(substring($identifiers, 3, 1))
return count($id)
};
ただし、このクエリは次のシーケンスを返します。
1 1 1 1 1 1 1 2 2 2 2 2 2
2
1 と 2 という 2 つの異なる値があるため、望ましい結果が得られます。
個別の値とカウント関数をどのように誤用していますか?