*** empty log message ***
[m17n/m17n-test.git] / mim-xml.c
1 /* XML 解析 */
2
3 #include <stdio.h>
4 #include <string.h>
5 #include <stdlib.h>
6 #include <libxml/xmlreader.h>
7 #include <libxml/xmlmemory.h>
8
9 void
10 error_exit (char *fmt, char *arg)
11 {
12   fprintf (stderr, fmt, arg);
13   exit (1);
14 }
15
16 int
17 main (int argc, char **argv)
18 {
19 #if 0
20   XPathContextPtr context;
21   xmlXPathObjectPtr result;
22   xmlChar *xpath = (xmlChar *) "//input-method";
23   xmlChar *key;
24   xmlNodeSetPtr nodeset;
25 #endif
26   int i;
27   xmlTextReaderPtr reader;
28
29   reader = xmlReaderForFile (argv[1], "utf-8", 0);
30   xmlTextReaderRelaxNGValidate (reader, argv[2]);
31   while ((i = xmlTextReaderRead (reader)) == 1);
32   printf ("%d\n\n", i);
33
34 #if 0
35   doc = xmlParseFile (argv[1]);
36   if (! doc)
37     error_exit ("Invalid XML file: %s", argv[1]);
38   context = xmlXPathNewContext (doc);
39   result = xmlXPathEvalExpression (xpath, context);
40   if (! result)
41     error_exit ("Error in xmlXPathEvalExpression for: %s", (char *) xpath);
42   xmlXPathFreeContext (context);
43   if (xmlXPathNodeSetIsEmpty (result->nodesetval))
44     error_exit ("Can't find the node: %s", (char *) xpath);
45   nodeset = result->nodesetval;
46   for (i = 0; i < nodeset->nodeNr; i++)
47     {
48       key = xmlGetProp (nodeset->nodeTab[i], "input-method-name");
49       printf ("input-method-name: %s\n", key);
50       xmlFree (key);
51       key = xmlGetProp (nodeset->nodeTab[i], "language");
52       printf ("langauge: %s\n", key);
53       xmlFree (key);
54       key = xmlGetProp (nodeset->nodeTab[i], "extra-id");
55       if (key)
56         {
57           printf ("extra-id: %s\n", key);
58           xmlFree (key);
59         }
60     }
61   xmlXPathFreeObject (result);
62 #endif
63   exit (0);
64 }