static int raptor_librdfa_parse_start(raptor_parser* rdf_parser) { raptor_locator *locator = &rdf_parser->locator; raptor_librdfa_parser_context *librdfa_parser; int rc; char* base_uri_string = NULL; librdfa_parser = (raptor_librdfa_parser_context*)rdf_parser->context; locator->line = -1; locator->column = -1; locator->byte = 0; if(rdf_parser->base_uri) base_uri_string = (char*)raptor_uri_as_string(rdf_parser->base_uri); else /* base URI is required for rdfa - checked in rdfa_create_context() */ return 1; if(librdfa_parser->context) rdfa_free_context(librdfa_parser->context); librdfa_parser->context = rdfa_create_context(base_uri_string); if(!librdfa_parser->context) return 1; librdfa_parser->context->namespace_handler = raptor_librdfa_sax2_new_namespace_handler; librdfa_parser->context->namespace_handler_user_data = rdf_parser; librdfa_parser->context->world = rdf_parser->world; librdfa_parser->context->locator = &rdf_parser->locator; librdfa_parser->context->callback_data = rdf_parser; /* returns triples */ rdfa_set_default_graph_triple_handler(librdfa_parser->context, raptor_librdfa_generate_statement); /* returns RDFa Processing Graph error triples - not used by raptor */ rdfa_set_processor_graph_triple_handler(librdfa_parser->context, NULL); librdfa_parser->context->raptor_rdfa_version = librdfa_parser->rdfa_version; rc = rdfa_parse_start(librdfa_parser->context); if(rc != RDFA_PARSE_SUCCESS) return 1; return 0; }
int main(int argc, char** argv) { #ifdef LIBRDFA_IN_RAPTOR raptor_init(); #endif if(argc < 2) { printf("%s usage:\n\n" "%s <input.xhtml>\n", argv[0], argv[0]); } else { char* filename; g_xhtml_file = fopen(argv[1], "r"); filename = rindex(argv[1], '/'); if(filename == NULL) { filename = argv[1]; } else { filename++; } if(g_xhtml_file != NULL) { unsigned int buffer_length = 65535; char* buffer = malloc(buffer_length); char* base_uri = rdfa_join_string(BASE_URI, filename); rdfacontext* context = rdfa_create_context(base_uri); buffer_status* status = malloc(sizeof(buffer_status)); // get all of the buffer text fread(buffer, sizeof(char), buffer_length, g_xhtml_file); fclose(g_xhtml_file); // initialize the callback data status->buffer = buffer; status->current_offset = 0; status->total_length = strlen(buffer); context->callback_data = status; // setup the parser rdfa_set_default_graph_triple_handler( context, &default_graph_triple); rdfa_set_processor_graph_triple_handler( context, &processor_graph_triple); rdfa_set_buffer_filler(context, &fill_buffer); rdfa_parse(context); rdfa_free_context(context); free(base_uri); } else { perror("failed to open file:"); } } #ifdef LIBRDFA_IN_RAPTOR raptor_finish(); #endif return 0; }