-
-let rec find_first_tag pull_parser =
- match pull_parser () with
- | Some (E_start_tag _ as e) -> e
- | None -> assert false
- | _ -> find_first_tag pull_parser
-
-let iter_entities_file f pull_parser =
- ignore (find_first_tag pull_parser); (* <entities-table> *)
- let rec aux () =
- match pull_parser () with
- | Some (E_start_tag ("entity", attrs, _, _)) ->
- (try
- let name = List.assoc "name" attrs in
- let value = List.assoc "value" attrs in
- f name value
- with Not_found -> ());
- aux ()
- | None -> ()
- | _ -> aux ()
+let iter_gen record_tag name_field value_field f fname =
+ let start_element tag attrs =
+ if tag = record_tag then
+ try
+ let name = List.assoc name_field attrs in
+ let value = List.assoc value_field attrs in
+ f name value
+ with Not_found -> ()