#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);
}
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]);