define function difference ($a) { element period { subtract-dates(date($a[2]),date($a[1])), attribute tstart {$a[1]}, attribute tend {$a[2]} }, if (exists (subsequence($a,3))) then ( difference(subsequence($a,2)) ) else () } define function firstDate () { for $x in document('v-emps.xml')/employees/employee/title return $x sortby (@tstart ascending) } define function allRange () { for $x in document('v-emps.xml')/employees/employee/title[last()>1 and position() != last()] return $x sortby (date(@tend) ascending) } (difference((firstDate()[1]/@tstart, distinct-values(allRange()/@tend))) sortby (int(text()) descending))[1]