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@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     XMLPUBFUN int XMLCALL
74         xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
75                                          const char *format,
76                                          va_list argptr);
77     XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr
78                                                     writer,
79                                                     const xmlChar *
80                                                     content);
81 
82 /*
83  * Elements
84  */
85     XMLPUBFUN int XMLCALL
86         xmlTextWriterStartElement(xmlTextWriterPtr writer,
87                                   const xmlChar * name);
88     XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr
89                                                       writer,
90                                                       const xmlChar *
91                                                       prefix,
92                                                       const xmlChar * name,
93                                                       const xmlChar *
94                                                       namespaceURI);
95     XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer);
96     XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr
97                                                       writer);
98 
99 /*
100  * Elements conveniency functions
101  */
102     XMLPUBFUN int XMLCALL
103         xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,
104                                         const xmlChar * name,
105                                         const char *format, ...);
106     XMLPUBFUN int XMLCALL
107         xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
108                                          const xmlChar * name,
109                                          const char *format,
110                                          va_list argptr);
111     XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr
112                                                     writer,
113                                                     const xmlChar * name,
114                                                     const xmlChar *
115                                                     content);
116     XMLPUBFUN int XMLCALL
117         xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
118                                           const xmlChar * prefix,
119                                           const xmlChar * name,
120                                           const xmlChar * namespaceURI,
121                                           const char *format, ...);
122     XMLPUBFUN int XMLCALL
123         xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
124                                            const xmlChar * prefix,
125                                            const xmlChar * name,
126                                            const xmlChar * namespaceURI,
127                                            const char *format,
128                                            va_list argptr);
129     XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr
130                                                       writer,
131                                                       const xmlChar *
132                                                       prefix,
133                                                       const xmlChar * name,
134                                                       const xmlChar *
135                                                       namespaceURI,
136                                                       const xmlChar *
137                                                       content);
138 
139 /*
140  * Text
141  */
142     XMLPUBFUN int XMLCALL
143         xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer,
144                                     const char *format, ...);
145     XMLPUBFUN int XMLCALL
146         xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer,
147                                      const char *format, va_list argptr);
148     XMLPUBFUN int XMLCALL
149         xmlTextWriterWriteRawLen(xmlTextWriterPtr writer,
150                                  const xmlChar * content, int len);
151     XMLPUBFUN int XMLCALL
152         xmlTextWriterWriteRaw(xmlTextWriterPtr writer,
153                               const xmlChar * content);
154     XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr
155                                                          writer,
156                                                          const char
157                                                          *format, ...);
158     XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr
159                                                           writer,
160                                                           const char
161                                                           *format,
162                                                           va_list argptr);
163     XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer,
164                                                    const xmlChar *
165                                                    content);
166     XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer,
167                                                    const char *data,
168                                                    int start, int len);
169     XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer,
170                                                    const char *data,
171                                                    int start, int len);
172 
173 /*
174  * Attributes
175  */
176     XMLPUBFUN int XMLCALL
177         xmlTextWriterStartAttribute(xmlTextWriterPtr writer,
178                                     const xmlChar * name);
179     XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr
180                                                         writer,
181                                                         const xmlChar *
182                                                         prefix,
183                                                         const xmlChar *
184                                                         name,
185                                                         const xmlChar *
186                                                         namespaceURI);
187     XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr
188                                                     writer);
189 
190 /*
191  * Attributes conveniency functions
192  */
193     XMLPUBFUN int XMLCALL
194         xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
195                                           const xmlChar * name,
196                                           const char *format, ...);
197     XMLPUBFUN int XMLCALL
198         xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
199                                            const xmlChar * name,
200                                            const char *format,
201                                            va_list argptr);
202     XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr
203                                                       writer,
204                                                       const xmlChar * name,
205                                                       const xmlChar *
206                                                       content);
207     XMLPUBFUN int XMLCALL
208         xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
209                                             const xmlChar * prefix,
210                                             const xmlChar * name,
211                                             const xmlChar * namespaceURI,
212                                             const char *format, ...);
213     XMLPUBFUN int XMLCALL
214         xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
215                                              const xmlChar * prefix,
216                                              const xmlChar * name,
217                                              const xmlChar * namespaceURI,
218                                              const char *format,
219                                              va_list argptr);
220     XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr
221                                                         writer,
222                                                         const xmlChar *
223                                                         prefix,
224                                                         const xmlChar *
225                                                         name,
226                                                         const xmlChar *
227                                                         namespaceURI,
228                                                         const xmlChar *
229                                                         content);
230 
231 /*
232  * PI's
233  */
234     XMLPUBFUN int XMLCALL
235         xmlTextWriterStartPI(xmlTextWriterPtr writer,
236                              const xmlChar * target);
237     XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer);
238 
239 /*
240  * PI conveniency functions
241  */
242     XMLPUBFUN int XMLCALL
243         xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer,
244                                    const xmlChar * target,
245                                    const char *format, ...);
246     XMLPUBFUN int XMLCALL
247         xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,
248                                     const xmlChar * target,
249                                     const char *format, va_list argptr);
250     XMLPUBFUN int XMLCALL
251         xmlTextWriterWritePI(xmlTextWriterPtr writer,
252                              const xmlChar * target,
253                              const xmlChar * content);
254 
255 /**
256  * xmlTextWriterWriteProcessingInstruction:
257  *
258  * This macro maps to xmlTextWriterWritePI
259  */
260 #define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
261 
262 /*
263  * CDATA
264  */
265     XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
266     XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
267 
268 /*
269  * CDATA conveniency functions
270  */
271     XMLPUBFUN int XMLCALL
272         xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer,
273                                       const char *format, ...);
274     XMLPUBFUN int XMLCALL
275         xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer,
276                                        const char *format, va_list argptr);
277     XMLPUBFUN int XMLCALL
278         xmlTextWriterWriteCDATA(xmlTextWriterPtr writer,
279                                 const xmlChar * content);
280 
281 /*
282  * DTD
283  */
284     XMLPUBFUN int XMLCALL
285         xmlTextWriterStartDTD(xmlTextWriterPtr writer,
286                               const xmlChar * name,
287                               const xmlChar * pubid,
288                               const xmlChar * sysid);
289     XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer);
290 
291 /*
292  * DTD conveniency functions
293  */
294     XMLPUBFUN int XMLCALL
295         xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer,
296                                     const xmlChar * name,
297                                     const xmlChar * pubid,
298                                     const xmlChar * sysid,
299                                     const char *format, ...);
300     XMLPUBFUN int XMLCALL
301         xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer,
302                                      const xmlChar * name,
303                                      const xmlChar * pubid,
304                                      const xmlChar * sysid,
305                                      const char *format, va_list argptr);
306     XMLPUBFUN int XMLCALL
307         xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
308                               const xmlChar * name,
309                               const xmlChar * pubid,
310                               const xmlChar * sysid,
311                               const xmlChar * subset);
312 
313 /**
314  * xmlTextWriterWriteDocType:
315  *
316  * this macro maps to xmlTextWriterWriteDTD
317  */
318 #define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
319 
320 /*
321  * DTD element definition
322  */
323     XMLPUBFUN int XMLCALL
324         xmlTextWriterStartDTDElement(xmlTextWriterPtr writer,
325                                      const xmlChar * name);
326     XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr
327                                                      writer);
328 
329 /*
330  * DTD element definition conveniency functions
331  */
332     XMLPUBFUN int XMLCALL
333         xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
334                                            const xmlChar * name,
335                                            const char *format, ...);
336     XMLPUBFUN int XMLCALL
337         xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
338                                             const xmlChar * name,
339                                             const char *format,
340                                             va_list argptr);
341     XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr
342                                                        writer,
343                                                        const xmlChar *
344                                                        name,
345                                                        const xmlChar *
346                                                        content);
347 
348 /*
349  * DTD attribute list definition
350  */
351     XMLPUBFUN int XMLCALL
352         xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer,
353                                      const xmlChar * name);
354     XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr
355                                                      writer);
356 
357 /*
358  * DTD attribute list definition conveniency functions
359  */
360     XMLPUBFUN int XMLCALL
361         xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
362                                            const xmlChar * name,
363                                            const char *format, ...);
364     XMLPUBFUN int XMLCALL
365         xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
366                                             const xmlChar * name,
367                                             const char *format,
368                                             va_list argptr);
369     XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr
370                                                        writer,
371                                                        const xmlChar *
372                                                        name,
373                                                        const xmlChar *
374                                                        content);
375 
376 /*
377  * DTD entity definition
378  */
379     XMLPUBFUN int XMLCALL
380         xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer,
381                                     int pe, const xmlChar * name);
382     XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr
383                                                     writer);
384 
385 /*
386  * DTD entity definition conveniency functions
387  */
388     XMLPUBFUN int XMLCALL
389         xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
390                                                   int pe,
391                                                   const xmlChar * name,
392                                                   const char *format, ...);
393     XMLPUBFUN int XMLCALL
394         xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
395                                                    int pe,
396                                                    const xmlChar * name,
397                                                    const char *format,
398                                                    va_list argptr);
399     XMLPUBFUN int XMLCALL
400         xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
401                                             int pe,
402                                             const xmlChar * name,
403                                             const xmlChar * content);
404     XMLPUBFUN int XMLCALL
405         xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
406                                             int pe,
407                                             const xmlChar * name,
408                                             const xmlChar * pubid,
409                                             const xmlChar * sysid,
410                                             const xmlChar * ndataid);
411     XMLPUBFUN int XMLCALL
412         xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr
413                                                     writer,
414                                                     const xmlChar * pubid,
415                                                     const xmlChar * sysid,
416                                                     const xmlChar *
417                                                     ndataid);
418     XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr
419                                                       writer, int pe,
420                                                       const xmlChar * name,
421                                                       const xmlChar *
422                                                       pubid,
423                                                       const xmlChar *
424                                                       sysid,
425                                                       const xmlChar *
426                                                       ndataid,
427                                                       const xmlChar *
428                                                       content);
429 
430 /*
431  * DTD notation definition
432  */
433     XMLPUBFUN int XMLCALL
434         xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer,
435                                       const xmlChar * name,
436                                       const xmlChar * pubid,
437                                       const xmlChar * sysid);
438 
439 /*
440  * Indentation
441  */
442     XMLPUBFUN int XMLCALL
443         xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent);
444     XMLPUBFUN int XMLCALL
445         xmlTextWriterSetIndentString(xmlTextWriterPtr writer,
446                                      const xmlChar * str);
447 
448 /*
449  * misc
450  */
451     XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer);
452 
453 #ifdef __cplusplus
454 }
455 #endif
456 
457 #endif /* LIBXML_WRITER_ENABLED */
458 
459 #endif                          /* __XML_XMLWRITER_H__ */
460