- function
- | E_error exn -> raise (Failure (Pxp_types.string_of_exn exn))
- | E_start_tag ("entry",attlist,_,_) ->
- let id = List.assoc "id" attlist in
- let uri = List.assoc "uri" attlist in
- current_node := (int_of_string id,Some (UriManager.uri_of_string uri))
- | E_start_tag ("node",attlist,_,_) ->
- let id = int_of_string (List.assoc "id" attlist) in
- let uri = List.assoc "uri" attlist in
- current_entry.(!current_assign) <-
- SOF.add (id,Some (UriManager.uri_of_string uri))
- current_entry.(!current_assign)
- | E_start_tag (s,_,_,_) ->
- current_assign := assigner_of' s
- | E_end_tag ("entry",_) ->
- m := MAL.add !current_node (entry_of_array current_entry) !m;
- Array.fill current_entry 0 7 SOF.empty
+ { XPP.default_callbacks with
+ XPP.start_element = Some( fun name attlist ->
+ match name with
+ | "entry" ->
+ let id = List.assoc "id" attlist in
+ let uri = List.assoc "uri" attlist in
+ current_node := (int_of_string id,Some (UriManager.uri_of_string uri))
+ | "node" ->
+ let id = int_of_string (List.assoc "id" attlist) in
+ let uri = List.assoc "uri" attlist in
+ current_entry.(!current_assign) <-
+ SOF.add (id,Some (UriManager.uri_of_string uri))
+ current_entry.(!current_assign)
+ | s -> current_assign := assigner_of' s
+ );
+ XPP.end_element = Some( fun name ->
+ match name with
+ | "entry" ->
+ m := MAL.add !current_node (entry_of_array current_entry) !m;
+ Array.fill current_entry 0 7 SOF.empty