#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "libsgml.h"
void elementBegin(SGML_PARSER *parser, void *userContext, const char *elementName);
void elementEnd(SGML_PARSER *parser, void *userContext, const char *elementName);
void attributeNew(SGML_PARSER *parser, void *userContext, const char *attributeName, const char *attributeValue);
void textNew(SGML_PARSER *parser, void *userContext, const char *text);
int main(int argc, char **argv)
{
        SGML_PARSER  sgml;
        SGML_HANDLERS handlers;
        memset(&handlers, 0, sizeof(handlers));
        handlers.elementBegin = elementBegin;
        handlers.elementEnd   = elementEnd;
        handlers.attributeNew = attributeNew;
        handlers.textNew      = textNew;
        sgmlParserInitialize(&sgml, SGML_EXTENSION_TYPE_CUSTOM, &handlers, NULL);
        sgmlParserParseFile(&sgml, (argc > 1)?argv[1]:"test.sgml");
        sgmlParserDestroy(&sgml, 0);
        return 1;
}
void elementBegin(SGML_PARSER *parser, void *userContext, const char *elementName)
{
        fprintf(stdout,"BEGIN ELEMENT: %s\n", elementName);
}
void elementEnd(SGML_PARSER *parser, void *userContext, const char *elementName)
{
        fprintf(stdout,"END ELEMENT: %s\n", elementName);
}
void attributeNew(SGML_PARSER *parser, void *userContext, const char *attributeName, const char *attributeValue)
{
        fprintf(stdout,"..attr='%s' value='%s'\n", attributeName, attributeValue);
}
void textNew(SGML_PARSER *parser, void *userContext, const char *text)
{
}