1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
(* $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 namespace_element_impl default_extension in
let r = new super_root_impl default_extension in
make_spec_from_mapping
~super_root_exemplar: r
~default_pinstr_exemplar: e
~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;
enable_namespace_processing = Some(new Pxp_dtd.namespace_manager);
encoding = `Enc_iso88591;
}
in
try
let tree =
parse_document_entity
config
(from_file in_filename)
spec
in
tree # write (`Out_channel stdout) `Enc_iso88591;
with
Not_found as e ->
raise e
| 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_namespace [ 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);;
|