This is the structure of my XML file -
James Bond
Allen Bond
XQuery 3.0 solution with group by:
{
for $name in //Name
let $full :=
if(not($name/@p)) then concat($name, ' ', $name/@t)
else concat($name, ' ', $name/@t, ', ', $name/@p)
group by $full
return {$full, '-', count($name)}
}
XQuery 1.0 solution with distinct-values($arg):
{
let $names :=
for $name in //Name
return if(not($name/@p)) then concat($name, ' ', $name/@t)
else concat($name, ' ', $name/@t, ', ', $name/@p)
for $name in distinct-values($names)
return {$name, '-', count($names[. eq $name])}
}