blob: 31ceb5f1af8ff618b7a8995ab3fbe348130fd2d9 [file] [log] [blame]
Daniel Veillardab69f362004-02-17 11:40:32 +00001
Daniel Veillard1d211e22003-10-20 22:32:39 +00002/*
Daniel Veillardbe586972003-11-18 20:56:51 +00003 * Summary: text writing API for XML
4 * Description: text writing API for XML
Daniel Veillard1d211e22003-10-20 22:32:39 +00005 *
Daniel Veillardbe586972003-11-18 20:56:51 +00006 * Copy: See Copyright for the status of this software.
Daniel Veillard1d211e22003-10-20 22:32:39 +00007 *
Daniel Veillardbe586972003-11-18 20:56:51 +00008 * Author: Alfred Mickautsch <alfred@mickautsch.de>
Daniel Veillard1d211e22003-10-20 22:32:39 +00009 */
10
11#ifndef __XML_XMLWRITER_H__
12#define __XML_XMLWRITER_H__
13
Daniel Veillarda2351322004-06-27 12:08:10 +000014#include <libxml/xmlversion.h>
15
16#ifdef LIBXML_WRITER_ENABLED
17
Daniel Veillard5841f0e2003-11-20 11:59:09 +000018#include <stdarg.h>
Daniel Veillard1d211e22003-10-20 22:32:39 +000019#include <libxml/xmlIO.h>
20#include <libxml/list.h>
William M. Bracka2e844a2004-01-06 11:52:13 +000021#include <libxml/xmlstring.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
Daniel Veillard1d211e22003-10-20 22:32:39 +000026
Daniel Veillardab69f362004-02-17 11:40:32 +000027 typedef struct _xmlTextWriter xmlTextWriter;
28 typedef xmlTextWriter *xmlTextWriterPtr;
Daniel Veillard1d211e22003-10-20 22:32:39 +000029
30/*
31 * Constructors & Destructor
32 */
Daniel Veillardab69f362004-02-17 11:40:32 +000033 XMLPUBFUN xmlTextWriterPtr XMLCALL
34 xmlNewTextWriter(xmlOutputBufferPtr out);
35 XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000036 xmlNewTextWriterFilename(const char *uri, int compression);
Daniel Veillardab69f362004-02-17 11:40:32 +000037 XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000038 xmlNewTextWriterMemory(xmlBufferPtr buf, int compression);
Daniel Veillardab69f362004-02-17 11:40:32 +000039 XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000040 xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression);
Daniel Veillardab69f362004-02-17 11:40:32 +000041 XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000042 xmlNewTextWriterDoc(xmlDocPtr * doc, int compression);
Daniel Veillardab69f362004-02-17 11:40:32 +000043 XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard500a1de2004-03-22 15:22:58 +000044 xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node,
45 int compression);
Daniel Veillardab69f362004-02-17 11:40:32 +000046 XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +000047
48/*
49 * Functions
50 */
51
52
53/*
54 * Document
55 */
Daniel Veillardab69f362004-02-17 11:40:32 +000056 XMLPUBFUN int XMLCALL
57 xmlTextWriterStartDocument(xmlTextWriterPtr writer,
58 const char *version,
59 const char *encoding,
60 const char *standalone);
Daniel Veillard500a1de2004-03-22 15:22:58 +000061 XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr
62 writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +000063
64/*
65 * Comments
66 */
Daniel Veillard500a1de2004-03-22 15:22:58 +000067 XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr
68 writer);
Daniel Veillardab69f362004-02-17 11:40:32 +000069 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +000077 XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr
78 writer,
79 const xmlChar *
80 content);
Daniel Veillard1d211e22003-10-20 22:32:39 +000081
82/*
83 * Elements
84 */
Daniel Veillardab69f362004-02-17 11:40:32 +000085 XMLPUBFUN int XMLCALL
86 xmlTextWriterStartElement(xmlTextWriterPtr writer,
87 const xmlChar * name);
Daniel Veillard500a1de2004-03-22 15:22:58 +000088 XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr
89 writer,
90 const xmlChar *
91 prefix,
92 const xmlChar * name,
93 const xmlChar *
94 namespaceURI);
Daniel Veillard5841f0e2003-11-20 11:59:09 +000095 XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer);
Daniel Veillard500a1de2004-03-22 15:22:58 +000096 XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr
97 writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +000098
99/*
100 * Elements conveniency functions
101 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000102 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000111 XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr
112 writer,
113 const xmlChar * name,
114 const xmlChar *
115 content);
Daniel Veillardab69f362004-02-17 11:40:32 +0000116 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000129 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);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000138
139/*
140 * Text
141 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000142 XMLPUBFUN int XMLCALL
143 xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer,
144 const char *format, ...);
145 XMLPUBFUN int XMLCALL
146 xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000147 const char *format, va_list argptr);
Daniel Veillardab69f362004-02-17 11:40:32 +0000148 XMLPUBFUN int XMLCALL
149 xmlTextWriterWriteRawLen(xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000150 const xmlChar * content, int len);
Daniel Veillardab69f362004-02-17 11:40:32 +0000151 XMLPUBFUN int XMLCALL
152 xmlTextWriterWriteRaw(xmlTextWriterPtr writer,
153 const xmlChar * content);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000154 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);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000172
173/*
174 * Attributes
175 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000176 XMLPUBFUN int XMLCALL
177 xmlTextWriterStartAttribute(xmlTextWriterPtr writer,
178 const xmlChar * name);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000179 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);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000189
190/*
191 * Attributes conveniency functions
192 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000193 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000202 XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr
203 writer,
204 const xmlChar * name,
205 const xmlChar *
206 content);
Daniel Veillardab69f362004-02-17 11:40:32 +0000207 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000220 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);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000230
231/*
232 * PI's
233 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000234 XMLPUBFUN int XMLCALL
235 xmlTextWriterStartPI(xmlTextWriterPtr writer,
236 const xmlChar * target);
237 XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000238
239/*
240 * PI conveniency functions
241 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000242 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,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000249 const char *format, va_list argptr);
Daniel Veillardab69f362004-02-17 11:40:32 +0000250 XMLPUBFUN int XMLCALL
251 xmlTextWriterWritePI(xmlTextWriterPtr writer,
252 const xmlChar * target,
253 const xmlChar * content);
254
Daniel Veillard1e906612003-12-05 14:57:46 +0000255/**
256 * xmlTextWriterWriteProcessingInstruction:
257 *
258 * This macro maps to xmlTextWriterWritePI
259 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000260#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
261
262/*
263 * CDATA
264 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000265 XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
266 XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000267
268/*
269 * CDATA conveniency functions
270 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000271 XMLPUBFUN int XMLCALL
272 xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer,
273 const char *format, ...);
274 XMLPUBFUN int XMLCALL
275 xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000276 const char *format, va_list argptr);
Daniel Veillardab69f362004-02-17 11:40:32 +0000277 XMLPUBFUN int XMLCALL
278 xmlTextWriterWriteCDATA(xmlTextWriterPtr writer,
279 const xmlChar * content);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000280
281/*
282 * DTD
283 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000284 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);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000290
291/*
292 * DTD conveniency functions
293 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000294 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,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000305 const char *format, va_list argptr);
Daniel Veillardab69f362004-02-17 11:40:32 +0000306 XMLPUBFUN int XMLCALL
307 xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
308 const xmlChar * name,
309 const xmlChar * pubid,
310 const xmlChar * sysid,
311 const xmlChar * subset);
312
Daniel Veillard1e906612003-12-05 14:57:46 +0000313/**
314 * xmlTextWriterWriteDocType:
315 *
316 * this macro maps to xmlTextWriterWriteDTD
317 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000318#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
319
320/*
321 * DTD element definition
322 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000323 XMLPUBFUN int XMLCALL
324 xmlTextWriterStartDTDElement(xmlTextWriterPtr writer,
325 const xmlChar * name);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000326 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr
327 writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000328
329/*
330 * DTD element definition conveniency functions
331 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000332 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000341 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr
342 writer,
343 const xmlChar *
344 name,
345 const xmlChar *
346 content);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000347
348/*
349 * DTD attribute list definition
350 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000351 XMLPUBFUN int XMLCALL
352 xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer,
353 const xmlChar * name);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000354 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr
355 writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000356
357/*
358 * DTD attribute list definition conveniency functions
359 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000360 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);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000369 XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr
370 writer,
371 const xmlChar *
372 name,
373 const xmlChar *
374 content);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000375
376/*
377 * DTD entity definition
378 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000379 XMLPUBFUN int XMLCALL
380 xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000381 int pe, const xmlChar * name);
Daniel Veillard500a1de2004-03-22 15:22:58 +0000382 XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr
383 writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000384
385/*
386 * DTD entity definition conveniency functions
387 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000388 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
Daniel Veillard500a1de2004-03-22 15:22:58 +0000412 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);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000429
430/*
431 * DTD notation definition
432 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000433 XMLPUBFUN int XMLCALL
434 xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer,
435 const xmlChar * name,
436 const xmlChar * pubid,
437 const xmlChar * sysid);
438
Daniel Veillard2cca4462004-01-02 20:04:23 +0000439/*
440 * Indentation
441 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000442 XMLPUBFUN int XMLCALL
443 xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent);
444 XMLPUBFUN int XMLCALL
445 xmlTextWriterSetIndentString(xmlTextWriterPtr writer,
446 const xmlChar * str);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000447
448/*
449 * misc
450 */
Daniel Veillardab69f362004-02-17 11:40:32 +0000451 XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000452
453#ifdef __cplusplus
454}
455#endif
Daniel Veillarda2351322004-06-27 12:08:10 +0000456
457#endif /* LIBXML_WRITER_ENABLED */
458
Daniel Veillard1d211e22003-10-20 22:32:39 +0000459#endif /* __XML_XMLWRITER_H__ */