/* end of an element */ void raptor_sax2_end_element(void* user_data, const unsigned char *name) { raptor_sax2* sax2=(raptor_sax2*)user_data; raptor_xml_element* xml_element; if(sax2->failed) return; #ifdef RAPTOR_XML_EXPAT #ifdef EXPAT_UTF8_BOM_CRASH sax2->tokens_count++; #endif #endif xml_element=sax2->current_element; if(xml_element) { #ifdef RAPTOR_DEBUG_VERBOSE fprintf(stderr, "\nraptor_rdfxml_end_element_handler: End ns-element: "); raptor_qname_print(stderr, xml_element->name); fputc('\n', stderr); #endif if(sax2->end_element_handler) sax2->end_element_handler(sax2->user_data, xml_element); } raptor_namespaces_end_for_depth(&sax2->namespaces, raptor_sax2_get_depth(sax2)); xml_element=raptor_xml_element_pop(sax2); if(xml_element) raptor_free_xml_element(xml_element); raptor_sax2_dec_depth(sax2); }
/** * raptor_xml_writer_empty_element: * @xml_writer: XML writer object * @element: XML element object * * Write an empty XML element to the XML writer. * * Closes any previous empty element if XML writer option AUTO_EMPTY * is enabled. **/ void raptor_xml_writer_empty_element(raptor_xml_writer* xml_writer, raptor_xml_element *element) { raptor_xml_writer_write_xml_declaration(xml_writer); XML_WRITER_FLUSH_CLOSE_BRACKET(xml_writer); if(xml_writer->pending_newline || XML_WRITER_AUTO_INDENT(xml_writer)) raptor_xml_writer_indent(xml_writer); raptor_xml_writer_start_element_common(xml_writer, element, 1); raptor_xml_writer_end_element_common(xml_writer, element, 1); raptor_namespaces_end_for_depth(xml_writer->nstack, xml_writer->depth); }
/** * raptor_xml_writer_end_element: * @xml_writer: XML writer object * @element: XML element object * * Write an end XML element to the XML writer. * * Indents the end element if XML writer option AUTO_INDENT is enabled. **/ void raptor_xml_writer_end_element(raptor_xml_writer* xml_writer, raptor_xml_element* element) { int is_empty; xml_writer->depth--; if(xml_writer->pending_newline || (XML_WRITER_AUTO_INDENT(xml_writer) && element->content_element_seen)) raptor_xml_writer_indent(xml_writer); is_empty = XML_WRITER_AUTO_EMPTY(xml_writer) ? !(element->content_cdata_seen || element->content_element_seen) : 0; raptor_xml_writer_end_element_common(xml_writer, element, is_empty); raptor_namespaces_end_for_depth(xml_writer->nstack, xml_writer->depth); if(xml_writer->current_element) xml_writer->current_element = xml_writer->current_element->parent; }