(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-02-07 09:59:37 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-04 21:59:38 CET by Kim Nguyen>
*)
open Utils
let text_string = QName.to_string QName.text
let attr_map_string = QName.to_string QName.attribute_map
+ let att_pref = QName.node QName.attribute_prefix
let rec start_element_handler parser_ ctx tag attr_list =
do_text parser_ ctx;
let parent = top ctx in
end_element_handler parser_ ctx attr_map_string
and do_attribute parser_ ctx (att, value) =
- let att_tag = " " ^ att in
+ let att_tag = att_pref ^ att in
start_element_handler parser_ ctx att_tag [];
start_element_handler parser_ ctx text_string [];
let n = top ctx in n.data <- value;
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 root t = t.root