Main Page   Modules   Namespace List   Data Structures   File List   Data Fields   Examples  

test.c

Example for using user defined callbacks for parsing SGML.

/*
 * libsgml -- SGML state machine parsing library.
 *                                                                  
 * Copyright (c) 2002 Uninformed Research (http://www.uninformed.org)
 * All rights reserved.
 *
 * skape
 * [email protected]
 */
#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)
{
}

Generated on Tue Mar 25 19:49:03 2003 for libsgml by doxygen1.3-rc3