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