Loading of the nfa now possible from an xml file.
[yaz-moved-to-github.git] / include / yaz / nfaxml.h
index 8ddb0a2..98fd8a6 100644 (file)
@@ -1,6 +1,6 @@
 /*  Copyright (C) 2006, Index Data ApS
  *  See the file LICENSE for details.
- *  $Id: nfaxml.h,v 1.3 2006-07-06 07:45:07 adam Exp $
+ *  $Id: nfaxml.h,v 1.5 2006-07-14 13:06:37 heikki Exp $
  */
 
 /**
@@ -10,7 +10,7 @@
  * The xml file is something like this (using round brakcets 
  * on tags, not to confuse our documentation tools)
  *   (?xml ...)
- *   (charmap)
+ *   (ruleset)
  *      (rule)
  *         (fromstring) FOO (/fromstring)
  *         (tostring)   BAR (/tostring)
 #ifndef YAZ_NFA_XML_H
 #define YAZ_NFA_XML_H
 
+#if YAZ_HAVE_XML2
+
+#include <libxml/parser.h>
+
 #include <yaz/yconfig.h>
 #include <yaz/log.h>
 #include <yaz/nfa.h>
@@ -44,17 +48,21 @@ YAZ_BEGIN_CDECL
 /** \brief Parse the NFA from a XML document 
  * 
  * \param doc the xml tree to parse
- * \param error_info will be filled in case of errors
+ * \param filename used for info in error messages
  * 
  * \returns either the NFA, or null in case of errors 
  *
  * It is up to the caller to destroy the nfa when done.
  *
+ * Does not expand XIncludes.
+ *
  * In case of errors, returns a null pointer.  You can then
- * call xmlGetLastError() to get the details of the error. 
+ * call xmlGetLastError() to get the details of the error,
+ * if you have a recent enough libxml2. Those are already 
+ * logged in yazlog.
  *
  */
-yaz_nfa *yaz_nfa_parse_xml_doc(void *xmlDocPtr);
+yaz_nfa *yaz_nfa_parse_xml_doc(xmlDocPtr doc, const char *filename);
 
 
 /** \brief Parse the NFA from a file 
@@ -66,16 +74,40 @@ yaz_nfa *yaz_nfa_parse_xml_doc(void *xmlDocPtr);
  *
  * It is up to the caller to destroy the nfa when done.
  *
- * In case of errors, error_info will be filled with
- * suitable diagnostics. It may be null, if you don't
- * care.
+ * This routine also expands XIncludes.
+ * 
+ * In case of errors, returns a null pointer.  You can then
+ * call xmlGetLastError() to get the details of the error,
+ * if you have a recent enough libxml2. Those are already 
+ * logged in yazlog.
  *
  */
 yaz_nfa *yaz_nfa_parse_xml_file(const char *filepath);
 
 
-YAZ_END_CDECL
+/** \brief Parse the NFA from a memory buffer
+ *
+ * \param filepath path to the xml file to parse
+ * \param error_info will be filled in case of errors
+ * 
+ * \returns either the NFA, or null in case of errors 
+ *
+ * It is up to the caller to destroy the nfa when done.
+ *
+ * Does not expand XIncludes.
+ *
+ * In case of errors, returns a null pointer.  You can then
+ * call xmlGetLastError() to get the details of the error,
+ * if you have a recent enough libxml2. Those are already 
+ * logged in yazlog.
+ *
+ */
+yaz_nfa *yaz_nfa_parse_xml_memory(const char *xmlbuff, const char *filename);
 
+
+YAZ_END_CDECL
+   
+#endif /* YAZ_HAVE_XML2 */
 #endif /* YAZ_NFA_XML_H */
 
 /*