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__ */