Supprimer des fonctions 'keep_elements' et 'keep_attributs'
[tatoo.git] / src / table_driver.ml
1 open Table
2 open Table_options
3 open Query_tree
4
5 let parse_xpath p =
6   Xpath.Parser.parse (Ulexing.from_utf8_string p)
7
8 let main () = 
9   let () = Table_options.parse () in
10   let doc =
11     let fd, close_fd = match !Table_options.input_file with
12         None | Some "-" | Some "/dev/stdin" ->stdin,ignore 
13       | Some input ->
14         let fd = open_in input in fd, fun() -> close_in fd
15     in
16     (*let inc = open_in Sys.argv.(1) in*)
17     let doc = Naive_tree.load_xml_file fd in
18     close_fd(); 
19     doc
20   in
21   (*Hashtbl.clear Query_tree.table_query_tree;  il faut vider le hashtbl?????????????????*)
22   let queries =
23     List.map ( fun q ->
24       parse_xpath q) 
25       !Table_options.queries
26   in
27   let t1 = Unix.gettimeofday () in
28   let query_tree_list =
29     List.map (fun query -> compile_xpath query) queries
30   in
31   let mini_qtree_list = 
32     List.map (fun qtree -> Query_tree.minimize_qtree qtree) query_tree_list 
33   in
34   List.iter ( fun q -> 
35     let res = eval_qtree doc [ (Naive_tree.root doc) ] q in
36     print_string "<xml_result num=\"1\" >\n";
37     print_node_list doc res;
38     print_string "</xml_result>\n";
39   ) mini_qtree_list ;
40   
41   let t2 = Unix.gettimeofday () in
42   let t = (t2 -. t1) *. 1000. in
43   let _ = if !Table_options.count then 
44        Format.fprintf Format.std_formatter "there are %i nodes\nit takes %fms\n" !Query_tree.compteur t;
45   in
46   exit 0
47
48
49 let () = main ()
50
51
52
53
54
55
56
57