(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-02-14 16:14:00 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-05 16:20:32 CET by Kim Nguyen>
*)
open Utils
"NODE " ^ string_of_int n.preorder)
let debug_node fmt node =
- Format.fprintf fmt "{ tag=%s; preorder=%i; data=%s; first_child=%a; next_sibling=%a; parent=%a }"
+ Format.fprintf fmt "{ tag=%s; preorder=%i; data=%S; first_child=%a; next_sibling=%a; parent=%a }"
(QName.to_string node.tag)
node.preorder
node.data
if n.next_sibling != dummy then
let _ = pop ctx in consume_closing ctx (top ctx)
- and end_element_handler parser_ ctx tag =
+ and end_element_handler parser_ ctx _ =
do_text parser_ ctx;
let node = top ctx in
if node.first_child == dummy then node.first_child <- nil
- let character_data_handler parser_ ctx text =
+ let character_data_handler _parser ctx text =
Buffer.add_string ctx.text_buffer text
let create_parser () =
let rec print_attributes out tree_ node =
if node != nil then begin
- output_string out (QName.to_string node.tag);
+ let ntag = QName.to_string node.tag in
+ output_char out ' ';
+ output out ntag 1 (String.length ntag - 1);
output_string out "=\"";
output_escape_string out node.first_child.data;
output_char out '"';
let rec print_xml out tree_ node =
if node != nil then
- let () =
- if node.tag == QName.text then
- output_escape_string out node.data
+ let () =
+ if node.tag == QName.text then
+ output_escape_string out node.data
+ else
+ let tag = QName.to_string node.tag in
+ output_char out '<';
+ output_string out tag;
+ let fchild =
+ if node.first_child.tag == QName.attribute_map then
+ let () = print_attributes out tree_ node.first_child.first_child in
+ node.first_child.next_sibling
else
- let tag = QName.to_string node.tag in
- output_char out '<';
- output_string out tag;
- let fchild =
- if node.first_child.tag == QName.attribute_map then
- let () =
- print_attributes out tree_ node.first_child.first_child
- in
- node.first_child.next_sibling
- else
- node.first_child
- in
- if fchild == nil then output_string out "/>"
- else begin
- output_char out '>';
- print_xml out tree_ fchild;
- output_string out "</";
- output_string out tag;
- output_char out '>'
- end
+ node.first_child
in
- print_xml out tree_ node.next_sibling
-
+ if fchild == nil then output_string out "/>"
+ else begin
+ output_char out '>';
+ print_xml out tree_ fchild;
+ output_string out "</";
+ output_string out tag;
+ output_char out '>'
+ end
+ in
+ print_xml out tree_ node.next_sibling
+let print_xml out tree_ node = print_xml out tree_ { node with next_sibling = nil }
let root t = t.root
let first_child _ n = n.first_child
let next_sibling _ n = n.next_sibling
let tag _ n = n.tag
let data _ n = n.data
let preorder _ n = n.preorder
+
+let print_node fmt n = Parser.debug_node fmt n