(***********************************************************************) (* *) (* 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. *) (* *) (***********************************************************************) (** use: xml_file "XPath querie" or : xml_file -f XPath_querie_file only the first line of XPath_querie_file is read *) open Format let doc () = 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 let query () = let arg2 = Sys.argv.(2) in if arg2 = "-f" then let fq = open_in Sys.argv.(3) in let q = XPath.parse_file fq in close_in fq; fprintf err_formatter "Parse query OK ! "; q else let q = XPath.parse_string arg2 in fprintf err_formatter "Parse query OK ! "; q let build_asta query = let asta = Compil.trans query in fprintf err_formatter "Compil OK ! "; asta let compute_run doc query = let run = Run.compute doc query in fprintf err_formatter "Run OK ! \n"; run let () = let doc = doc () in let query = query () in let asta = build_asta query in let run = compute_run doc asta in fprintf err_formatter "@[##### Query #####@. %a@]\n" XPath.Ast.print query; output_string stderr "\n##### Doc #####\n"; Tree.print_xml stderr doc (Tree.root doc); output_string stderr "\n"; Asta.print err_formatter asta; Run.print err_formatter run; output_string stderr "\n # Doc: \n"; Tree.print_xml_preorder stderr doc (Tree.root doc); exit 0