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