(** use: [./test xml_file -f XPath_queries_file]
- one query per line [XPath_querie_file]
+ one query per line [XPath_querie_file], output
+ a solution per line.
*)
open Format
let fd = open_in Sys.argv.(1) in
let d = Tree.load_xml_file fd in
close_in fd;
- fprintf err_formatter "Parse Tree OK ! ";
d
with _ -> list in
let list = list_qu fq [] in
close_in fq;
- fprintf err_formatter "Parse query OK !\n %!";
list
- else failwith "Use -f"
+ else failwith "Use ./test xml_file -f XPath_queries_file"
let compute_run doc query =
let run = Run.compute doc query in
let () =
let flag = Array.length Sys.argv = 5 in
+ let flag2 =
+ if flag
+ then int_of_string Sys.argv.(4) = 1
+ else false in
Format.pp_set_margin err_formatter 80;
let doc = doc () in
- output_string stderr "##### Doc with positions #####\n";
- Tree.print_xml_preorder stderr doc (Tree.root doc);
- output_string stderr "\n";
let queries = query () in
let rec print_selec fmt l = match l with
| [x] -> fprintf fmt "%s" (string_of_int x)
let asta = Compil.trans query in
let selected_nodes = Run.selected_nodes doc asta in
let run = compute_run doc asta in
- fprintf err_formatter "\n ### Query: %a"
- XPath.Ast.print query;
- fprintf err_formatter "@. ### Selected nodes: {%a}@."
- print_selec selected_nodes;
+ if flag
+ then
+ fprintf err_formatter " ### Query: %a"
+ XPath.Ast.print query
+ else ();
+ if flag2 then
+ fprintf err_formatter "@. ### Selected nodes: {%a}@."
+ print_selec selected_nodes
+ else ();
if flag
then begin
Asta.print err_formatter asta;
Run.print err_formatter run;
end
else ();
- let asta = Asta.empty in
solve_queries tl in
solve_queries queries;
exit 0