]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.ml
- the mathql interpreter is not helm-dependent any more
[helm.git] / helm / DEVEL / lablgtk_gtkmathview / lablgtk-20000829_gtkmathview-0.2.0 / minidom / test.ml
1
2 let doc = Minidom.doc_load "test.xml"
3
4 let root = Minidom.doc_get_root_node doc
5
6 let check_attribute_ns attr =
7   Printf.printf "\n\n";
8   let ns_uri = Minidom.attr_get_ns_uri attr
9   and attr_name = Minidom.attr_get_name attr
10   and attr_value = Minidom.attr_get_value attr
11   and parent = Minidom.attr_get_parent attr
12   in
13   match parent,ns_uri,attr_name,attr_value with
14     Some parent_node,Some uri,Some attribute_name,Some attribute_value ->
15       let attr_value = Minidom.node_get_attribute_ns parent_node attribute_name uri
16       in begin
17         match attr_value with
18           Some attr1 ->
19             Printf.printf "found the attribute with ns %s (was %s)\n"
20               (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value)
21         | None ->
22             Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri)
23       end
24   | _ ->
25       Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n"
26 ;;
27     
28 let print_attribute attr =
29   check_attribute_ns attr;
30   let ns_uri = Minidom.attr_get_ns_uri attr
31   in
32   begin
33     match ns_uri with
34       Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri);
35     | None -> ()
36   end;
37   match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with
38     (Some attr_name, Some attr_value) ->
39       Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) 
40   | (Some attr_name, _) ->
41       Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name)
42   | (_,_) ->
43       Printf.printf " ??? very strange attribute !!!"
44 ;;
45
46 let rec print_node n node =
47   if Minidom.node_is_blank node then ()
48   else if Minidom.node_is_element node then begin
49     match Minidom.node_get_name node with
50       Some node_name -> 
51         begin
52           let children = Minidom.node_get_children node
53           and attributes = Minidom.node_get_attributes node
54           and ns_uri = Minidom.node_get_ns_uri node
55           and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node)
56           in
57           for i = 1 to n do print_char ' ' done;
58           Printf.printf "<";
59           begin
60             match ns_uri with
61               Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri)
62             | None     -> ()
63           end;
64           Printf.printf "%s" (Minidom.string_of_mDOMString node_name);
65           List.iter print_attribute attributes;
66           Printf.printf ">\n";
67           List.iter (print_node (n + 2)) children;
68           for i = 1 to n do print_char ' ' done;
69           Printf.printf "</%s>\n" (Minidom.string_of_mDOMString node_name)
70         end
71     | None -> Printf.printf "??? this node has no name !!!\n"
72   end else if Minidom.node_is_text node then begin
73     match Minidom.node_get_content node with
74       Some node_content ->
75         for i = 1 to n do print_char ' ' done;
76         Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content)
77     | None -> Printf.printf "??? this node has no content !!!\n"
78   end else begin
79     Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node)
80   end
81 ;;
82   
83 print_node 0 root;;
84