]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/pxp/pxp/examples/simple_transformation/delcol.ml
Initial revision
[helm.git] / helm / DEVEL / pxp / pxp / examples / simple_transformation / delcol.ml
diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/delcol.ml b/helm/DEVEL/pxp/pxp/examples/simple_transformation/delcol.ml
new file mode 100644 (file)
index 0000000..57c3327
--- /dev/null
@@ -0,0 +1,69 @@
+(* $Id$
+ * ----------------------------------------------------------------------
+ *
+ *)
+
+(* Read a record-list, delete a column, and print it as XML *)
+open Pxp_types;;
+open Pxp_document;;
+open Pxp_yacc;;
+
+let delcol col tree =
+  map_tree
+    ~pre:
+      (fun n -> 
+        match n # node_type with
+            T_element name when name = col ->
+              raise Skip
+          | _ -> n # orphaned_flat_clone)
+    tree
+;;
+
+
+let main() =
+  let column = ref "" in
+  Arg.parse
+      [ "-col", Arg.String (fun s -> column := s),
+           " (last-name|first-name|phone)";
+      ]
+      (fun _ -> raise (Arg.Bad "Bad usage"))
+      "usage: sort [ options ]";
+  if !column = "" then (
+    prerr_endline "Column not specified!";
+    exit 1;
+  );
+  if not(List.mem !column ["last-name"; "first-name"; "phone"]) then (
+    prerr_endline ("Unknown column: " ^ !column);
+    exit 1
+  );
+  try
+    let dtd = parse_dtd_entity default_config (from_file "record.dtd") in
+    let tree = 
+      parse_content_entity default_config (from_channel stdin) dtd default_spec
+    in
+    print_endline "<?xml encoding='ISO-8859-1'?>";
+    (delcol !column tree) # write (Out_channel stdout) `Enc_iso88591
+  with
+      x ->
+       prerr_endline(string_of_exn x);
+       exit 1
+;;
+
+
+main();;
+
+(* ======================================================================
+ * History:
+ * 
+ * $Log$
+ * Revision 1.1  2000/11/17 09:57:32  lpadovan
+ * Initial revision
+ *
+ * Revision 1.2  2000/08/24 09:42:52  gerd
+ *     Updated a comment.
+ *
+ * Revision 1.1  2000/08/24 09:39:59  gerd
+ *     Initial revision.
+ *
+ * 
+ *)