*****                                 *****
* Možné řešení úkolů z textu k vyzkoušení *
*****                                 *****
-----XPath-----

X1 Jaká města jsou evidovaná u České republiky? (11)
//country[name = "Czech Republic"]//city/name

X2 Které státy mají uvedenou informaci o etnických skupinách na svém území? (183, nikoliv 515)
//country/ethnicgroups/../@name

X3 U jakých států jsou vedeni Češi jako etnická skupina(2)
//country[ethnicgroups = "Czech"]/@name

X4 U kterých států je uvedeno, že leží na více kontinentech(3)
//country/encompassed[2]/../@name

X5 Jaké státy mají 10+ sousedů? (3)
//country/border[10]/../@name


pozn. U X1 je správně /name, protože města nemají atribut se jménem. U X2-X5 států je potřeba používat @name kvůli jedinečnosti. Elementy /name mohou být multivalue (např. u ČR nebo USA)


-----XQuery-----

(: X1 Vypsat názvy organizací, ve kterých je Česká republika členským státem. Nerozlišujte typ členství. Nepoužívejte ručně zadanou hodnotu @id České republiky. (46) :)
for $members in //organization/members
let $countryId := $members/@country,
    $countryName := //country[@id=$countryId]/@name,
    $orgName := $members/../@name
where contains($countryName, "Czech")  
return $orgName




(: X2 Vyhledejte všechny druhy státních zřízení (či formy vlády) a seřaďte je sestupně podle počtu zemí, ve kterých jsou uplatněné. :)
for $country in //country
let $gov := $country/@government
group by $gov
order by count($country) descending
return concat($gov, ';', count($country))




(: X3 Kolik států leží na jednotlivých kontinentech? Jaká je celková populace a hrubý domácí produkt kontinentů? :)
for $encompassed in //country/encompassed
let $continent := $encompassed/@continent
let $gdp := $encompassed/../@gdp_total
let $population := $encompassed/../@population
let $continentName := //continent[@id=$continent]/@name

group by $continentName
order by count($encompassed) descending
return concat($continentName, ';', count($encompassed), ';', sum($gdp), ";", sum($population))





(: X4 Kolik států leží na jednotlivých kontinentech? Státy, které jsou rozložené na více kontinentech, rozpočítejte příslušným podílem. :)
for $encompassed in //country/encompassed
let $continent := $encompassed/@continent
let $percentage := $encompassed/@percentage
let $continentName := //continent[@id=$continent]/@name

group by $continentName
return concat($continentName, ';', sum($percentage)*0.01)




(: X5 Vypište názvy řek evidovaných v datasetu a pokud je informace k dispozici, vypište názvy kontinentů, na kterých se nachází. :)
for $river in //river
let $riverName := $river/@name
let $country := $river/located/@country
let $continent := //country[@id=$country]/encompassed/@continent
let $continentName := //continent[@id=$continent]/@name
order by $riverName
return concat($riverName, ';', string-join($continentName, "+"))
