Это легко сделать в XPath 2.0 :
for $type in /*/*/Filter[1]/FilterType
return
count(/*/group1/*[type eq $type])
Когда это выражение Xpath сравнивается с предоставленным XML-документом, возвращается правильный результат:
2
В XPath 1.0, если количество элементов group1/inst
известно заранее, а $ vType обозначает рассматриваемый FilterType, тогда можно построить следующее выражение XPath 1.0:
($vType = /*/group1/inst[1]/type)
+
($vType = /*/group1/inst[2]/type)
+
($vType = /*/group1/inst[3]/type)
, который снова производит:
2
Наконец, если в XSLT необходимо выражение XPath 1.0, а «Filter» является текущим узлом,
тогда следующее выражение XPath вычисляет точное количество совпадений:
count(/*/group1/inst[type = curent()/FilterType])