/* * raptor_rdfxmla_emit_resource_uri: * @serializer: #raptor_serializer object * @element: XML Element * @uri: URI object * @depth: depth into tree * * Emit a description of a resource using an XML Element * * Return value: non-0 on failure **/ static int raptor_rdfxmla_emit_resource_uri(raptor_serializer *serializer, raptor_xml_element *element, raptor_uri* uri, int depth) { raptor_rdfxmla_context* context = (raptor_rdfxmla_context*)serializer->context; raptor_xml_writer *xml_writer = context->xml_writer; raptor_qname **attrs; unsigned char *attr_name; unsigned char *attr_value; RAPTOR_DEBUG2("Emitting resource predicate URI %s\n", raptor_uri_as_string(uri)); attrs = RAPTOR_CALLOC(raptor_qname**, 1, sizeof(raptor_qname*)); if(!attrs) return 1; attr_name = (unsigned char *)"resource"; if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS)) /* newly allocated string */ attr_value = raptor_uri_to_relative_uri_string(serializer->base_uri, uri); else attr_value = raptor_uri_as_string(uri); attrs[0] = raptor_new_qname_from_namespace_local_name(serializer->world, context->rdf_nspace, attr_name, attr_value); if(RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS)) RAPTOR_FREE(char*, attr_value); if(!attrs[0]) { RAPTOR_FREE(qnamearray, attrs); return 1; } raptor_xml_element_set_attributes(element, attrs, 1); raptor_xml_writer_start_element(xml_writer, element); raptor_xml_writer_end_element(context->xml_writer, element); RAPTOR_DEBUG2("Emitted resource predicate URI %s\n", raptor_uri_as_string(uri)); return 0; }
static xmlParserInputPtr raptor_libxml_resolveEntity(void* user_data, const xmlChar *publicId, const xmlChar *systemId) { raptor_sax2* sax2 = (raptor_sax2*)user_data; xmlParserCtxtPtr ctxt = sax2->xc; const unsigned char *uri_string = NULL; xmlParserInputPtr entity_input = NULL; int load_entity = 0; if(ctxt->input) uri_string = RAPTOR_GOOD_CAST(const unsigned char *, ctxt->input->filename); if(!uri_string) uri_string = RAPTOR_GOOD_CAST(const unsigned char *, ctxt->directory); load_entity = RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES); if(load_entity) load_entity = raptor_sax2_check_load_uri_string(sax2, uri_string); if(load_entity) { entity_input = xmlLoadExternalEntity(RAPTOR_GOOD_CAST(const char*, uri_string), RAPTOR_GOOD_CAST(const char*, publicId), ctxt); } else {
/* start a serialize */ static int raptor_turtle_serialize_start(raptor_serializer* serializer) { raptor_turtle_context* context = (raptor_turtle_context*)serializer->context; raptor_turtle_writer* turtle_writer; int flag; if(context->turtle_writer) raptor_free_turtle_writer(context->turtle_writer); flag = RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_WRITE_BASE_URI); turtle_writer = raptor_new_turtle_writer(serializer->world, serializer->base_uri, flag, context->nstack, serializer->iostream); if(!turtle_writer) return 1; raptor_turtle_writer_set_option(turtle_writer, RAPTOR_OPTION_WRITER_AUTO_INDENT, 1); raptor_turtle_writer_set_option(turtle_writer, RAPTOR_OPTION_WRITER_INDENT_WIDTH, 2); context->turtle_writer = turtle_writer; return 0; }
static int raptor_json_serialize_start(raptor_serializer* serializer) { raptor_json_context* context = (raptor_json_context*)serializer->context; raptor_uri* base_uri; char* value; base_uri = RAPTOR_OPTIONS_GET_NUMERIC(serializer, RAPTOR_OPTION_RELATIVE_URIS) ? serializer->base_uri : NULL; context->json_writer = raptor_new_json_writer(serializer->world, base_uri, serializer->iostream); if(!context->json_writer) return 1; if(context->is_resource) { context->avltree = raptor_new_avltree((raptor_data_compare_handler)raptor_statement_compare, (raptor_data_free_handler)raptor_free_statement, 0); if(!context->avltree) { raptor_free_json_writer(context->json_writer); context->json_writer = NULL; return 1; } } /* start callback */ value = RAPTOR_OPTIONS_GET_STRING(serializer, RAPTOR_OPTION_JSON_CALLBACK); if(value) { raptor_iostream_string_write(value, serializer->iostream); raptor_iostream_write_byte('(', serializer->iostream); } if(!context->is_resource) { /* start outer object */ raptor_json_writer_start_block(context->json_writer, '{'); raptor_json_writer_newline(context->json_writer); /* start triples array */ raptor_iostream_counted_string_write((const unsigned char*)"\"triples\" : ", 12, serializer->iostream); raptor_json_writer_start_block(context->json_writer, '['); raptor_json_writer_newline(context->json_writer); } return 0; }
/** * raptor_sax2_parse_chunk: * @sax2: sax2 object * @buffer: input buffer * @len: input buffer lenght * @is_end: non-0 if end of data * * Parse a chunk of XML data generating SAX2 events * * Return value: non-0 on failure */ int raptor_sax2_parse_chunk(raptor_sax2* sax2, const unsigned char *buffer, size_t len, int is_end) { #ifdef RAPTOR_XML_LIBXML /* parser context */ xmlParserCtxtPtr xc = sax2->xc; int rc; if(!xc) { int libxml_options = 0; if(!len) { /* no data given at all */ raptor_sax2_update_document_locator(sax2, sax2->locator); raptor_log_error(sax2->world, RAPTOR_LOG_LEVEL_ERROR, sax2->locator, "XML Parsing failed - no element found"); return 1; } xc = xmlCreatePushParserCtxt(&sax2->sax, sax2, /* user data */ (char*)buffer, RAPTOR_BAD_CAST(int, len), NULL); if(!xc) goto handle_error; #ifdef RAPTOR_LIBXML_XML_PARSE_NONET if(RAPTOR_OPTIONS_GET_NUMERIC(sax2, RAPTOR_OPTION_NO_NET)) libxml_options |= XML_PARSE_NONET; #endif #ifdef HAVE_XMLCTXTUSEOPTIONS xmlCtxtUseOptions(xc, libxml_options); #endif xc->userData = sax2; /* user data */ xc->vctxt.userData = sax2; /* user data */ xc->vctxt.error = (xmlValidityErrorFunc)raptor_libxml_validation_error; xc->vctxt.warning = (xmlValidityWarningFunc)raptor_libxml_validation_warning; xc->replaceEntities = 1; sax2->xc = xc; if(is_end) len = 0; else return 0; }
static void raptor_xml_writer_write_xml_declaration(raptor_xml_writer* xml_writer) { if(!xml_writer->xml_declaration_checked) { /* check that it should be written once only */ xml_writer->xml_declaration_checked = 1; if(RAPTOR_OPTIONS_GET_NUMERIC(xml_writer, RAPTOR_OPTION_WRITER_XML_DECLARATION)) { raptor_iostream_string_write((const unsigned char*)"<?xml version=\"", xml_writer->iostr); raptor_iostream_counted_string_write((XML_WRITER_XML_VERSION(xml_writer) == 10) ? (const unsigned char*)"1.0" : (const unsigned char*)"1.1", 3, xml_writer->iostr); raptor_iostream_string_write((const unsigned char*)"\" encoding=\"utf-8\"?>\n", xml_writer->iostr); } } }