]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml
This commit was manufactured by cvs2svn to create branch 'start'.
[helm.git] / helm / DEVEL / lablgtk_gtkmathview / lablgtk-20001129_gtkmathview-0.2.1 / minidom / test.ml
diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml
new file mode 100644 (file)
index 0000000..3c7a092
--- /dev/null
@@ -0,0 +1,84 @@
+
+let doc = Minidom.doc_load "test.xml"
+
+let root = Minidom.doc_get_root_node doc
+
+let check_attribute_ns attr =
+  Printf.printf "\n\n";
+  let ns_uri = Minidom.attr_get_ns_uri attr
+  and attr_name = Minidom.attr_get_name attr
+  and attr_value = Minidom.attr_get_value attr
+  and parent = Minidom.attr_get_parent attr
+  in
+  match parent,ns_uri,attr_name,attr_value with
+    Some parent_node,Some uri,Some attribute_name,Some attribute_value ->
+      let attr_value = Minidom.node_get_attribute_ns parent_node attribute_name uri
+      in begin
+        match attr_value with
+          Some attr1 ->
+           Printf.printf "found the attribute with ns %s (was %s)\n"
+              (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value)
+        | None ->
+           Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri)
+      end
+  | _ ->
+      Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n"
+;;
+    
+let print_attribute attr =
+  check_attribute_ns attr;
+  let ns_uri = Minidom.attr_get_ns_uri attr
+  in
+  begin
+    match ns_uri with
+      Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri);
+    | None -> ()
+  end;
+  match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with
+    (Some attr_name, Some attr_value) ->
+      Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) 
+  | (Some attr_name, _) ->
+      Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name)
+  | (_,_) ->
+      Printf.printf " ??? very strange attribute !!!"
+;;
+
+let rec print_node n node =
+  if Minidom.node_is_blank node then ()
+  else if Minidom.node_is_element node then begin
+    match Minidom.node_get_name node with
+      Some node_name -> 
+        begin
+          let children = Minidom.node_get_children node
+          and attributes = Minidom.node_get_attributes node
+          and ns_uri = Minidom.node_get_ns_uri node
+          and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node)
+          in
+          for i = 1 to n do print_char ' ' done;
+          Printf.printf "<";
+          begin
+            match ns_uri with
+              Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri)
+            | None     -> ()
+          end;
+          Printf.printf "%s" (Minidom.string_of_mDOMString node_name);
+          List.iter print_attribute attributes;
+          Printf.printf ">\n";
+          List.iter (print_node (n + 2)) children;
+          for i = 1 to n do print_char ' ' done;
+          Printf.printf "</%s>\n" (Minidom.string_of_mDOMString node_name)
+        end
+    | None -> Printf.printf "??? this node has no name !!!\n"
+  end else if Minidom.node_is_text node then begin
+    match Minidom.node_get_content node with
+      Some node_content ->
+        for i = 1 to n do print_char ' ' done;
+        Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content)
+    | None -> Printf.printf "??? this node has no content !!!\n"
+  end else begin
+    Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node)
+  end
+;;
+  
+print_node 0 root;;
+