let rec project_to_xml (p:project) = 
    let name  = get_project_name p in 
    let id    = get_project_id p in 
    let teamr = List.sort (fun u v -> compare (get_team_num u) (get_team_num v))
      (H.assoc_to_list (get_project_teams p)) in
    let teams = List.flatten (List.map (team_to_xml) teamr) in
    let subpr = List.sort (fun u v -> compare u.add v.add) (get_project_sub p) in
    let subps = List.map project_to_xml subpr in 
      Xml.Element ("project",[("num", string_of_int (get_project_num p)); 
                              ("name", name);
                              ("id", id);
                              ("coeff", string_of_float (get_project_coeff p));
                              ("dgrad", string_of_float (get_project_dgrad p));
                             ],
                   teams@subps)