Started the error handling in nfaxml. Not at all ready, but I want it in
[yaz-moved-to-github.git] / include / yaz / nfaxml.h
1 /*  Copyright (C) 2006, Index Data ApS
2  *  See the file LICENSE for details.
3  *  $Id: nfaxml.h,v 1.1 2006-07-04 12:59:56 heikki Exp $
4  */
5
6 /**
7  * \file nfaxml.h
8  * \brief Routines for reading NFA specs from an XML file
9  *
10  * The xml file is something like this (using round brakcets 
11  * on tags, not to confuse our documentation tools)
12  *   (?xml ...)
13  *   (charmap)
14  *      (rule)
15  *         (fromstring) FOO (/fromstring)
16  *         (tostring)   BAR (/tostring)
17  *      (/rule)
18  *      (rule)
19  *         (fromrange) a-z (/fromrange)
20  *         (torange)   A-Z (/torange)
21  *      (/rule)
22  *      ...
23  *
24  *  The rules consist of two parts, 'from' and 'to'.
25  *  From rules can be
26  *     fromstring (which can be a single character)
27  *     fromrange  (like a-z)
28  *     (later, perhaps a fromregexp)
29  *  To rules can be
30  *     tostring (which can be a single character)
31  *     torange  (only with a fromrange)
32  *     (later, perhaps backrefs from regexps)
33  */
34
35 #ifndef YAZ_NFA_XML_H
36 #define YAZ_NFA_XML_H
37
38 #include <yaz/yconfig.h>
39 #include <yaz/log.h>
40 #include <yaz/nfa.h>
41
42 #if HAVE_XML2
43 #include <libxml/parser.h>
44
45 YAZ_BEGIN_CDECL
46
47  
48
49 /** \brief Parse the NFA from a XML document 
50  * 
51  * \param doc the xml tree to parse
52  * \param error_info will be filled in case of errors
53  * 
54  * \returns either the NFA, or null in case of errors 
55  *
56  * It is up to the caller to destroy the nfa when done.
57  *
58  * In case of errors, returns a null pointer.  You can then
59  * call xmlGetLastError() to get the details of the error. 
60  *
61  */
62 yaz_nfa *yaz_nfa_parse_xml_doc(xmlDocPtr doc);
63
64
65 /** \brief Parse the NFA from a file 
66  *
67  * \param filepath path to the xml file to parse
68  * \param error_info will be filled in case of errors
69  * 
70  * \returns either the NFA, or null in case of errors 
71  *
72  * It is up to the caller to destroy the nfa when done.
73  *
74  * In case of errors, error_info will be filled with
75  * suitable diagnostics. It may be null, if you don't
76  * care.
77  *
78  */
79 yaz_nfa *yaz_nfa_parse_xml_file(char *filepath);
80
81
82 YAZ_END_CDECL
83
84 #endif /* HAVE_XML2 */
85
86 #endif /* YAZ_NFA_XML_H */
87
88 /*
89  * Local variables:
90  * c-basic-offset: 4
91  * indent-tabs-mode: nil
92  * End:
93  * vim: shiftwidth=4 tabstop=8 expandtab
94  */
95