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