如何在XQuery中对一个变量执行多个函数(不同的值、计数)?

如何在XQuery中对一个变量执行多个函数(不同的值、计数)?,xquery,distinct-values,Xquery,Distinct Values,我有一个包含以下条目的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"/> &l

我有一个包含以下条目的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>
但是,此查询返回以下序列:

1 1 1 1 1 1 1 2 2 2 2 2 2
预期结果将是
2
,因为有两个不同的值:1和2


我是如何误用不同的值和计数函数的?

您需要将函数包装在实际的FLWOR表达式中:
count(不同的值(用于…返回…)
使用较短的

count(distinct-values(/*/*/@id/substring(.,3,1)))
<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>
2
对提供的XML文档执行上述XQuery

count(distinct-values(/*/*/@id/substring(.,3,1)))
<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>
2