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@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
23extern "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