--- /dev/null
+(***********************************************************************)
+(* *)
+(* TAToo *)
+(* *)
+(* Kim Nguyen, LRI UMR8623 *)
+(* Université Paris-Sud & CNRS *)
+(* *)
+(* Copyright 2010-2012 Université Paris-Sud and Centre National de la *)
+(* Recherche Scientifique. All rights reserved. This file is *)
+(* distributed under the terms of the GNU Lesser General Public *)
+(* License, with the special exception on linking described in file *)
+(* ../LICENSE. *)
+(* *)
+(***********************************************************************)
+
+(*
+ Time-stamp: <Last modified on 2013-03-13 21:29:17 CET by Kim Nguyen>
+*)
+
+let doc =
+ let fd = open_in Sys.argv.(1) in
+ let d = Tree.Naive.load_xml_file fd in
+ close_in fd; d
+
+
+let query =
+ let arg2 = Sys.argv.(2) in
+ Xpath.Parser.parse (Ulexing.from_latin1_string arg2)
+
+let auto =
+ Xpath.Compile.path query
+
+open Format
+
+let () =
+ fprintf err_formatter "Query: %a\n%!" Xpath.Ast.print_path query;
+ fprintf err_formatter "Automata: %a\n%!" Auto.Ata.print auto;
+ fprintf err_formatter "Evaluating automaton:\n%!";
+ let module Naive = Auto.Eval.Make(Tree.Naive) in
+ let t1 = Unix.gettimeofday() in
+ let results = Naive.eval auto doc (Tree.Naive.root doc) in
+ let teval = (Unix.gettimeofday () -. t1) *. 1000. in
+ let t1 = Unix.gettimeofday () in
+ output_string stdout "<xml_result>\n";
+ List.iter (fun n ->
+ Tree.Naive.print_xml stdout doc n;
+ output_char stdout '\n'
+ ) results;
+ output_string stdout "</xml_result>\n";
+ let tprint = (Unix.gettimeofday () -. t1) *. 1000. in
+ flush stdout;
+ fprintf err_formatter "evaluation time: %fms\nserialization time: %fms\n%!" teval tprint