1 /* 2 * Summary: text writing API for XML 3 * Description: text writing API for XML 4 * 5 * Copy: See Copyright for the status of this software. 6 * 7 * Author: Alfred Mickautsch <alfred (at) mickautsch.de> 8 */ 9 10 #ifndef __XML_XMLWRITER_H__ 11 #define __XML_XMLWRITER_H__ 12 13 #include <libxml/xmlversion.h> 14 15 #ifdef LIBXML_WRITER_ENABLED 16 17 #include <stdarg.h> 18 #include <libxml/xmlIO.h> 19 #include <libxml/list.h> 20 #include <libxml/xmlstring.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 typedef struct _xmlTextWriter xmlTextWriter; 27 typedef xmlTextWriter *xmlTextWriterPtr; 28 29 /* 30 * Constructors & Destructor 31 */ 32 XMLPUBFUN xmlTextWriterPtr XMLCALL 33 xmlNewTextWriter(xmlOutputBufferPtr out); 34 XMLPUBFUN xmlTextWriterPtr XMLCALL 35 xmlNewTextWriterFilename(const char *uri, int compression); 36 XMLPUBFUN xmlTextWriterPtr XMLCALL 37 xmlNewTextWriterMemory(xmlBufferPtr buf, int compression); 38 XMLPUBFUN xmlTextWriterPtr XMLCALL 39 xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression); 40 XMLPUBFUN xmlTextWriterPtr XMLCALL 41 xmlNewTextWriterDoc(xmlDocPtr * doc, int compression); 42 XMLPUBFUN xmlTextWriterPtr XMLCALL 43 xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node, 44 int compression); 45 XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer); 46 47 /* 48 * Functions 49 */ 50 51 52 /* 53 * Document 54 */ 55 XMLPUBFUN int XMLCALL 56 xmlTextWriterStartDocument(xmlTextWriterPtr writer, 57 const char *version, 58 const char *encoding, 59 const char *standalone); 60 XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr 61 writer); 62 63 /* 64 * Comments 65 */ 66 XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr 67 writer); 68 XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); 69 XMLPUBFUN int XMLCALL 70 xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, 71 const char *format, ...) 72 LIBXML_ATTR_FORMAT(2,3); 73 XMLPUBFUN int XMLCALL 74 xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, 75 const char *format, 76 va_list argptr) 77 LIBXML_ATTR_FORMAT(2,0); 78 XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr 79 writer, 80 const xmlChar * 81 content); 82 83 /* 84 * Elements 85 */ 86 XMLPUBFUN int XMLCALL 87 xmlTextWriterStartElement(xmlTextWriterPtr writer, 88 const xmlChar * name); 89 XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr 90 writer, 91 const xmlChar * 92 prefix, 93 const xmlChar * name, 94 const xmlChar * 95 namespaceURI); 96 XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer); 97 XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr 98 writer); 99 100 /* 101 * Elements conveniency functions 102 */ 103 XMLPUBFUN int XMLCALL 104 xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, 105 const xmlChar * name, 106 const char *format, ...) 107 LIBXML_ATTR_FORMAT(3,4); 108 XMLPUBFUN int XMLCALL 109 xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, 110 const xmlChar * name, 111 const char *format, 112 va_list argptr) 113 LIBXML_ATTR_FORMAT(3,0); 114 XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr 115 writer, 116 const xmlChar * name, 117 const xmlChar * 118 content); 119 XMLPUBFUN int XMLCALL 120 xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer, 121 const xmlChar * prefix, 122 const xmlChar * name, 123 const xmlChar * namespaceURI, 124 const char *format, ...) 125 LIBXML_ATTR_FORMAT(5,6); 126 XMLPUBFUN int XMLCALL 127 xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, 128 const xmlChar * prefix, 129 const xmlChar * name, 130 const xmlChar * namespaceURI, 131 const char *format, 132 va_list argptr) 133 LIBXML_ATTR_FORMAT(5,0); 134 XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr 135 writer, 136 const xmlChar * 137 prefix, 138 const xmlChar * name, 139 const xmlChar * 140 namespaceURI, 141 const xmlChar * 142 content); 143 144 /* 145 * Text 146 */ 147 XMLPUBFUN int XMLCALL 148 xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, 149 const char *format, ...) 150 LIBXML_ATTR_FORMAT(2,3); 151 XMLPUBFUN int XMLCALL 152 xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, 153 const char *format, va_list argptr) 154 LIBXML_ATTR_FORMAT(2,0); 155 XMLPUBFUN int XMLCALL 156 xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, 157 const xmlChar * content, int len); 158 XMLPUBFUN int XMLCALL 159 xmlTextWriterWriteRaw(xmlTextWriterPtr writer, 160 const xmlChar * content); 161 XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr 162 writer, 163 const char 164 *format, ...) 165 LIBXML_ATTR_FORMAT(2,3); 166 XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr 167 writer, 168 const char 169 *format, 170 va_list argptr) 171 LIBXML_ATTR_FORMAT(2,0); 172 XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, 173 const xmlChar * 174 content); 175 XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer, 176 const char *data, 177 int start, int len); 178 XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer, 179 const char *data, 180 int start, int len); 181 182 /* 183 * Attributes 184 */ 185 XMLPUBFUN int XMLCALL 186 xmlTextWriterStartAttribute(xmlTextWriterPtr writer, 187 const xmlChar * name); 188 XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr 189 writer, 190 const xmlChar * 191 prefix, 192 const xmlChar * 193 name, 194 const xmlChar * 195 namespaceURI); 196 XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr 197 writer); 198 199 /* 200 * Attributes conveniency functions 201 */ 202 XMLPUBFUN int XMLCALL 203 xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, 204 const xmlChar * name, 205 const char *format, ...) 206 LIBXML_ATTR_FORMAT(3,4); 207 XMLPUBFUN int XMLCALL 208 xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, 209 const xmlChar * name, 210 const char *format, 211 va_list argptr) 212 LIBXML_ATTR_FORMAT(3,0); 213 XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr 214 writer, 215 const xmlChar * name, 216 const xmlChar * 217 content); 218 XMLPUBFUN int XMLCALL 219 xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer, 220 const xmlChar * prefix, 221 const xmlChar * name, 222 const xmlChar * namespaceURI, 223 const char *format, ...) 224 LIBXML_ATTR_FORMAT(5,6); 225 XMLPUBFUN int XMLCALL 226 xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, 227 const xmlChar * prefix, 228 const xmlChar * name, 229 const xmlChar * namespaceURI, 230 const char *format, 231 va_list argptr) 232 LIBXML_ATTR_FORMAT(5,0); 233 XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr 234 writer, 235 const xmlChar * 236 prefix, 237 const xmlChar * 238 name, 239 const xmlChar * 240 namespaceURI, 241 const xmlChar * 242 content); 243 244 /* 245 * PI's 246 */ 247 XMLPUBFUN int XMLCALL 248 xmlTextWriterStartPI(xmlTextWriterPtr writer, 249 const xmlChar * target); 250 XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer); 251 252 /* 253 * PI conveniency functions 254 */ 255 XMLPUBFUN int XMLCALL 256 xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, 257 const xmlChar * target, 258 const char *format, ...) 259 LIBXML_ATTR_FORMAT(3,4); 260 XMLPUBFUN int XMLCALL 261 xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, 262 const xmlChar * target, 263 const char *format, va_list argptr) 264 LIBXML_ATTR_FORMAT(3,0); 265 XMLPUBFUN int XMLCALL 266 xmlTextWriterWritePI(xmlTextWriterPtr writer, 267 const xmlChar * target, 268 const xmlChar * content); 269 270 /** 271 * xmlTextWriterWriteProcessingInstruction: 272 * 273 * This macro maps to xmlTextWriterWritePI 274 */ 275 #define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI 276 277 /* 278 * CDATA 279 */ 280 XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer); 281 XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer); 282 283 /* 284 * CDATA conveniency functions 285 */ 286 XMLPUBFUN int XMLCALL 287 xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, 288 const char *format, ...) 289 LIBXML_ATTR_FORMAT(2,3); 290 XMLPUBFUN int XMLCALL 291 xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, 292 const char *format, va_list argptr) 293 LIBXML_ATTR_FORMAT(2,0); 294 XMLPUBFUN int XMLCALL 295 xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, 296 const xmlChar * content); 297 298 /* 299 * DTD 300 */ 301 XMLPUBFUN int XMLCALL 302 xmlTextWriterStartDTD(xmlTextWriterPtr writer, 303 const xmlChar * name, 304 const xmlChar * pubid, 305 const xmlChar * sysid); 306 XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer); 307 308 /* 309 * DTD conveniency functions 310 */ 311 XMLPUBFUN int XMLCALL 312 xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer, 313 const xmlChar * name, 314 const xmlChar * pubid, 315 const xmlChar * sysid, 316 const char *format, ...) 317 LIBXML_ATTR_FORMAT(5,6); 318 XMLPUBFUN int XMLCALL 319 xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, 320 const xmlChar * name, 321 const xmlChar * pubid, 322 const xmlChar * sysid, 323 const char *format, va_list argptr) 324 LIBXML_ATTR_FORMAT(5,0); 325 XMLPUBFUN int XMLCALL 326 xmlTextWriterWriteDTD(xmlTextWriterPtr writer, 327 const xmlChar * name, 328 const xmlChar * pubid, 329 const xmlChar * sysid, 330 const xmlChar * subset); 331 332 /** 333 * xmlTextWriterWriteDocType: 334 * 335 * this macro maps to xmlTextWriterWriteDTD 336 */ 337 #define xmlTextWriterWriteDocType xmlTextWriterWriteDTD 338 339 /* 340 * DTD element definition 341 */ 342 XMLPUBFUN int XMLCALL 343 xmlTextWriterStartDTDElement(xmlTextWriterPtr writer, 344 const xmlChar * name); 345 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr 346 writer); 347 348 /* 349 * DTD element definition conveniency functions 350 */ 351 XMLPUBFUN int XMLCALL 352 xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, 353 const xmlChar * name, 354 const char *format, ...) 355 LIBXML_ATTR_FORMAT(3,4); 356 XMLPUBFUN int XMLCALL 357 xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, 358 const xmlChar * name, 359 const char *format, 360 va_list argptr) 361 LIBXML_ATTR_FORMAT(3,0); 362 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr 363 writer, 364 const xmlChar * 365 name, 366 const xmlChar * 367 content); 368 369 /* 370 * DTD attribute list definition 371 */ 372 XMLPUBFUN int XMLCALL 373 xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer, 374 const xmlChar * name); 375 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr 376 writer); 377 378 /* 379 * DTD attribute list definition conveniency functions 380 */ 381 XMLPUBFUN int XMLCALL 382 xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, 383 const xmlChar * name, 384 const char *format, ...) 385 LIBXML_ATTR_FORMAT(3,4); 386 XMLPUBFUN int XMLCALL 387 xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, 388 const xmlChar * name, 389 const char *format, 390 va_list argptr) 391 LIBXML_ATTR_FORMAT(3,0); 392 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr 393 writer, 394 const xmlChar * 395 name, 396 const xmlChar * 397 content); 398 399 /* 400 * DTD entity definition 401 */ 402 XMLPUBFUN int XMLCALL 403 xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer, 404 int pe, const xmlChar * name); 405 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr 406 writer); 407 408 /* 409 * DTD entity definition conveniency functions 410 */ 411 XMLPUBFUN int XMLCALL 412 xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, 413 int pe, 414 const xmlChar * name, 415 const char *format, ...) 416 LIBXML_ATTR_FORMAT(4,5); 417 XMLPUBFUN int XMLCALL 418 xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, 419 int pe, 420 const xmlChar * name, 421 const char *format, 422 va_list argptr) 423 LIBXML_ATTR_FORMAT(4,0); 424 XMLPUBFUN int XMLCALL 425 xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, 426 int pe, 427 const xmlChar * name, 428 const xmlChar * content); 429 XMLPUBFUN int XMLCALL 430 xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer, 431 int pe, 432 const xmlChar * name, 433 const xmlChar * pubid, 434 const xmlChar * sysid, 435 const xmlChar * ndataid); 436 XMLPUBFUN int XMLCALL 437 xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr 438 writer, 439 const xmlChar * pubid, 440 const xmlChar * sysid, 441 const xmlChar * 442 ndataid); 443 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr 444 writer, int pe, 445 const xmlChar * name, 446 const xmlChar * 447 pubid, 448 const xmlChar * 449 sysid, 450 const xmlChar * 451 ndataid, 452 const xmlChar * 453 content); 454 455 /* 456 * DTD notation definition 457 */ 458 XMLPUBFUN int XMLCALL 459 xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer, 460 const xmlChar * name, 461 const xmlChar * pubid, 462 const xmlChar * sysid); 463 464 /* 465 * Indentation 466 */ 467 XMLPUBFUN int XMLCALL 468 xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent); 469 XMLPUBFUN int XMLCALL 470 xmlTextWriterSetIndentString(xmlTextWriterPtr writer, 471 const xmlChar * str); 472 473 XMLPUBFUN int XMLCALL 474 xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar); 475 476 477 /* 478 * misc 479 */ 480 XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer); 481 482 #ifdef __cplusplus 483 } 484 #endif 485 486 #endif /* LIBXML_WRITER_ENABLED */ 487 488 #endif /* __XML_XMLWRITER_H__ */ 489