let rec xml_to_project (gnum:int) (start:paddress) (x:Xml.xml) = 
    let pnum   = int_of_string (Xml.attrib x "num"in 
    let padd   = start@[pnum] in 
    let pname  = (try Xml.attrib x "name" with _ -> ""in 
    let pid    = (try Xml.attrib x "id" with _ -> ""in 
    let pcoeff = (try float_of_string (Xml.attrib x "coeff"with _ -> 0.) in 
    let pdgrad = (try float_of_string (Xml.attrib x "dgrad"with _ -> (-1.)) in 
      update_group_project_name gnum padd pname;
      update_group_project_id gnum padd pid;
      update_group_project_coeff gnum padd pcoeff;
      update_group_project_dgrad gnum padd pdgrad;
    let teams  = filter_tag (Xml.children x) "team" in 
      List.iter (fun xc -> xml_to_team gnum padd xc) teams;
    let subpro = filter_tag (Xml.children x) "project" in 
      List.iter (fun xc -> xml_to_project gnum padd xc) subpro