declare variable $count as xs:integer := 0; for $art in collection("sortie-treetagger-3208.xml")//item for $elt in $art//element let $conc2 := if (($elt/data[1][contains(., "NOM")]) and ($elt/following-sibling::element[1]/data[1][contains(., "PRP")]) and ($elt/following-sibling::element[2]/data[1][contains(., "NOM")]) and ($elt/following-sibling::element[3]/data[1]/text()="PRP")) then ( concat($elt/data[3]/text()," ",$elt/following-sibling::element[1]/data[3]/text()," ",$elt/following-sibling::element[2]/data[3]/text()," ",$elt/following-sibling::element[3]/data[3]/text()) ) else if (($elt/data[1]/text()="NOM") and ($elt/following-sibling::element[1]/data[1]/text()="ADJ")) then ( concat($elt/data[3]/text()," ",$elt/following-sibling::element[1]/data[3]/text()) ) else if (($elt/data[1]/text()="ADJ") and ($elt/following-sibling::element[1]/data[1]/text()="NOM")) then ( concat($elt/data[3]/text()," ",$elt/following-sibling::element[1]/data[3]/text()) ) else if (($elt/data[1][contains(., "VER")]) and ($elt/following-sibling::element[1]/data[1][contains(., "DET")]) and ($elt/following-sibling::element[2]/data[1]/text()="NOM")) then ( concat($elt/data[3]/text()," ",$elt/following-sibling::element[1]/data[3]/text()," ",$elt/following-sibling::element[2]/data[3]/text()) ) else ( " " ) where $conc2 != " " group by $g:= $conc2 order by count($conc2) descending return string-join(($g,count($conc2)), " ")