#ifndef GSK_XML_NODE_H_IN
#error "include this file by including gskxml.h"
#endif

G_BEGIN_DECLS

typedef void (*GskXmlParserCallback) (GskXmlNode   *document,
                                      gpointer      data);

typedef enum
{
  /* by default, "xmlns" and "xmlns:*" attribytes
     are interpreted, and affect the 'ns'
     and 'ns_by_abbrev' members.  also 'x:y' element names
     are replaced with 'y' and the appropriate namespace
     for 'x', if there is one.  if no namespace with
     abbreviation 'x' exists, the 'x:y' is retained
     as the element name. */
  GSK_XML_PARSE_WITHOUT_NAMESPACE_SUPPORT = (1<<0)

} GskXmlParseFlags;


typedef struct _GskXmlParser GskXmlParser;

GskXmlParser *gsk_xml_parser_new        (GskXmlParseFlags     flags,
                                         GskXmlParserCallback callback,
                                         gpointer             data,
                                         GDestroyNotify       destroy);
gboolean      gsk_xml_parser_feed       (GskXmlParser        *parser,
                                         const char          *data,
                                         gssize               len,
                                         GError             **error);
gboolean      gsk_xml_parser_feed_file  (GskXmlParser        *parser,
                                         const char          *filename,
                                         GError             **error);
gboolean      gsk_xml_parser_finish     (GskXmlParser        *parser,
                                         GError             **error);
void          gsk_xml_parser_free       (GskXmlParser        *parser);

G_END_DECLS


syntax highlighted by Code2HTML, v. 0.9.1