(* $Id$
* ----------------------------------------------------------------------
*
*)
open Pxp_document;;
open Pxp_yacc;;
open Pxp_types;;
let error_happened = ref false;;
let rec prerr_error e =
prerr_endline (string_of_exn e)
;;
class warner =
object
method warn w =
prerr_endline ("WARNING: " ^ w)
end
;;
let parse_and_write in_filename =
let spec =
let e = new element_impl default_extension in
make_spec_from_mapping
~super_root_exemplar: (new super_root_impl default_extension)
~default_pinstr_exemplar: (new pinstr_impl default_extension)
~data_exemplar: (new data_impl default_extension)
~default_element_exemplar: e
~element_mapping: (Hashtbl.create 1)
()
in
let config =
{ default_config with
warner = new warner;
enable_pinstr_nodes = true;
enable_super_root_node = true;
encoding = `Enc_utf8;
}
in
try
let tree =
parse_document_entity
config
(from_file in_filename)
spec
in
tree # write (`Out_channel stdout) `Enc_utf8;
with
e ->
error_happened := true;
prerr_error e
;;
let main() =
let in_file = ref "" in
Arg.parse
[ "-in", (Arg.String (fun s -> in_file := s)),
" <file> Set the XML file to read";
]
(fun x -> raise (Arg.Bad "Unexpected argument"))
"
usage: test_write [ options ]
List of options:";
if !in_file = "" then begin
prerr_endline "No input file specified.";
exit 1
end;
parse_and_write !in_file
;;
main();
if !error_happened then exit(1);;