diff options
Diffstat (limited to 'xmlwriter.c')
-rw-r--r-- | xmlwriter.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/xmlwriter.c b/xmlwriter.c index 099d3f0..76d7549 100644 --- a/xmlwriter.c +++ b/xmlwriter.c @@ -936,6 +936,12 @@ xmlTextWriterStartElement(xmlTextWriterPtr writer, const xmlChar * name) return -1; case XML_TEXTWRITER_NONE: break; + case XML_TEXTWRITER_ATTRIBUTE: + count = xmlTextWriterEndAttribute(writer); + if (count < 0) + return -1; + sum += count; + /* fallthrough */ case XML_TEXTWRITER_NAME: count = xmlOutputBufferWriteString(writer->out, ">"); if (count < 0) @@ -1832,12 +1838,26 @@ xmlTextWriterEndAttribute(xmlTextWriterPtr writer) sum += count; while (!xmlListEmpty(writer->nsstack)) { + xmlChar *namespaceURI = NULL; + xmlChar *prefix = NULL; + lk = xmlListFront(writer->nsstack); np = (xmlTextWriterNsStackEntry *) xmlLinkGetData(lk); + + if (np != 0) { + namespaceURI = xmlStrdup(np->uri); + prefix = xmlStrdup(np->prefix); + } + + xmlListPopFront(writer->nsstack); + if (np != 0) { count = - xmlTextWriterWriteAttribute(writer, np->prefix, - np->uri); + xmlTextWriterWriteAttribute(writer, prefix, + namespaceURI); + xmlFree(namespaceURI); + xmlFree(prefix); + if (count < 0) { xmlListDelete(writer->nsstack); writer->nsstack = NULL; @@ -1845,8 +1865,6 @@ xmlTextWriterEndAttribute(xmlTextWriterPtr writer) } sum += count; } - - xmlListPopFront(writer->nsstack); } break; |