e423643d52c4cc37f33d5b04000fa71a72c63409
[yaz-moved-to-github.git] / src / nfaxml.c
1 /*  Copyright (C) 2006, Index Data ApS
2  *  See the file LICENSE for details.
3  * 
4  *  $Id: nfaxml.c,v 1.5 2006-07-06 08:28:37 adam Exp $ 
5  */
6
7 /**
8  * \file nfaxml.c
9  * \brief Routines for reading a NFA spec from an XML file
10  *
11  */
12
13 #if HAVE_XML2
14
15 #include <string.h>
16
17 #include <libxml/parser.h>
18 #include <libxml/tree.h>
19 #include <libxml/xinclude.h>
20
21 #include <yaz/nfa.h>
22 #include <yaz/nmem.h> 
23 #include <yaz/yconfig.h>
24 #include <yaz/nfa.h>
25 #include <yaz/nfaxml.h>
26 #include <yaz/libxml2_error.h>
27
28 /** \brief Parse the NFA from a XML document 
29  */
30 yaz_nfa *yaz_nfa_parse_xml_doc(void *p)
31 {
32     xmlDocPtr doc = (xmlDocPtr) p;
33     if (!doc)
34         return 0;
35
36     return 0;
37 }
38
39 /** \brief Log XML errors in yaz_log
40  *
41  * Disabled because xmlErrorPtr does not exist for older Libxml2's
42  */
43 #if 0
44 static void log_xml_error(int errlevel, char *msg) {
45     xmlErrorPtr e=xmlGetLastError();
46     if (!e)  /* no error happened */
47         return;
48     if (!errlevel)
49         errlevel=YLOG_FATAL;
50     yaz_log(errlevel,"%s %d/%d: %s:%d: '%s' ",
51             msg, e->domain, e->code, e->file, e->line, e->message);
52     if (e->str1 || e->str2 || e->str3 )
53         yaz_log(errlevel,"extra info: '%s' '%s' '%s' %d %d",
54             e->str1, e->str2, e->str3, e->int1, e->int2 );
55 }
56 #endif
57
58 /** \brief Parse the NFA from a file 
59  */
60 yaz_nfa *yaz_nfa_parse_xml_file(const char *filepath) {
61     int nSubst;
62
63     libxml2_error_to_yazlog(YLOG_FATAL, "yaz_nfa_parse_xml_file");
64
65     xmlDocPtr doc = xmlParseFile(filepath);
66     if (!doc) {
67         return 0;
68     }
69     nSubst=xmlXIncludeProcess(doc);
70     if (nSubst==-1) {
71         return 0;
72     }
73     return yaz_nfa_parse_xml_doc(doc);
74 }
75
76
77
78 #endif /* HAVE_XML2 */
79
80
81 /*
82  * Local variables:
83  * c-basic-offset: 4
84  * indent-tabs-mode: nil
85  * End:
86  * vim: shiftwidth=4 tabstop=8 expandtab
87  */