*** empty log message ***
[m17n/m17n-test.git] / mim-xml.c
index 6c26109..ecd621c 100644 (file)
--- a/mim-xml.c
+++ b/mim-xml.c
@@ -7,9 +7,10 @@
 #include <libxml/xmlmemory.h>
 
 void
-error_exit (char *fmt, char *arg)
+error_exit (char *fmt, const char *arg)
 {
   fprintf (stderr, fmt, arg);
+  fprintf (stderr, "\n");
   exit (1);
 }
 
@@ -20,16 +21,49 @@ main (int argc, char **argv)
   XPathContextPtr context;
   xmlXPathObjectPtr result;
   xmlChar *xpath = (xmlChar *) "//input-method";
-  xmlChar *key;
   xmlNodeSetPtr nodeset;
 #endif
-  int i;
+  const xmlChar *name, *value;
   xmlTextReaderPtr reader;
+  int depth;
 
-  reader = xmlReaderForFile (argv[1], "utf-8", 0);
+  reader = xmlReaderForFile (argv[1], "utf-8",
+                            XML_PARSE_NOBLANKS
+                            /*XML_PARSE_XINCLUDE|XML_PARSE_NOENT*/);
+  /*xmlTextReaderRelaxNGValidate (reader, argv[2]);*/
+  if (xmlTextReaderRead (reader) != 1)
+    error_exit ("Read error: %s", argv[1]);
+  if (! (name = xmlTextReaderConstLocalName (reader)))
+    error_exit ("No %s node", "input-method");
+  printf ("%s", (char *) name);
+  xmlTextReaderRead (reader);
+  if (! (name = xmlTextReaderConstLocalName (reader)))
+    error_exit ("No inner node: %s", "tags");
+  printf (" %s", (char *) name);
+  xmlTextReaderRead (reader);
+  printf (" %s", (char *) xmlTextReaderConstLocalName (reader));
+  xmlTextReaderRead (reader);
+  printf (" %s", (char *) xmlTextReaderConstLocalName (reader));
+  depth = xmlTextReaderDepth(reader);
+  value = xmlTextReaderConstValue (reader);
+  printf (" \"%s\"", (char *) value);
+  xmlTextReaderRead (reader);
+  xmlTextReaderRead (reader);
+  xmlTextReaderRead (reader);
+  value = xmlTextReaderConstValue (reader);
+  printf (" \"%s\"", (char *) value);
+  do { xmlTextReaderRead (reader); }
+  while (xmlTextReaderNodeType (reader) != XML_READER_TYPE_TEXT);
+  value = xmlTextReaderConstValue (reader);
+  if (depth == xmlTextReaderDepth(reader))
+    printf (" \"%s\"", (char *) value);
+  printf ("\n");
+
+#if 0
   xmlTextReaderRelaxNGValidate (reader, argv[2]);
   while ((i = xmlTextReaderRead (reader)) == 1);
   printf ("%d\n\n", i);
+#endif
 
 #if 0
   doc = xmlParseFile (argv[1]);