blob: 5aeafa21b0bc2679691846a2e92a714225e08341 [file] [log] [blame]
Daniel Veillard1d211e22003-10-20 22:32:39 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: text writing API for XML
3 * Description: text writing API for XML
Daniel Veillard1d211e22003-10-20 22:32:39 +00004 *
Daniel Veillardbe586972003-11-18 20:56:51 +00005 * Copy: See Copyright for the status of this software.
Daniel Veillard1d211e22003-10-20 22:32:39 +00006 *
Daniel Veillardbe586972003-11-18 20:56:51 +00007 * Author: Alfred Mickautsch <alfred@mickautsch.de>
Daniel Veillard1d211e22003-10-20 22:32:39 +00008 */
9
10#ifndef __XML_XMLWRITER_H__
11#define __XML_XMLWRITER_H__
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
Daniel Veillard5841f0e2003-11-20 11:59:09 +000017#include <stdarg.h>
Daniel Veillard1d211e22003-10-20 22:32:39 +000018#include <libxml/xmlIO.h>
19#include <libxml/list.h>
20
21typedef struct _xmlTextWriter xmlTextWriter;
22typedef xmlTextWriter *xmlTextWriterPtr;
23
24/*
25 * Constructors & Destructor
26 */
27XMLPUBFUN xmlTextWriterPtr XMLCALL
28 xmlNewTextWriter (xmlOutputBufferPtr out);
29XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000030 xmlNewTextWriterFilename(const char *uri, int compression);
Daniel Veillard1d211e22003-10-20 22:32:39 +000031XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000032 xmlNewTextWriterMemory(xmlBufferPtr buf, int compression);
Daniel Veillard6cbd6c02003-12-04 12:31:49 +000033XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000034 xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression);
Daniel Veillard6cbd6c02003-12-04 12:31:49 +000035XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000036 xmlNewTextWriterDoc(xmlDocPtr * doc, int compression);
Daniel Veillard6cbd6c02003-12-04 12:31:49 +000037XMLPUBFUN xmlTextWriterPtr XMLCALL
Daniel Veillard5841f0e2003-11-20 11:59:09 +000038 xmlNewTextWriterTree(xmlDocPtr doc,
39 xmlNodePtr node, int compression);
Daniel Veillard6cbd6c02003-12-04 12:31:49 +000040XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +000041
42/*
43 * Functions
44 */
45
46
47/*
48 * Document
49 */
50XMLPUBFUN int XMLCALL
51 xmlTextWriterStartDocument (xmlTextWriterPtr writer,
52 const char *version,
53 const char *encoding,
54 const char *standalone);
55XMLPUBFUN int XMLCALL
56 xmlTextWriterEndDocument (xmlTextWriterPtr writer);
57
58/*
59 * Comments
60 */
61XMLPUBFUN int XMLCALL
62 xmlTextWriterWriteFormatComment (xmlTextWriterPtr writer,
63 const char *format, ...);
64XMLPUBFUN int XMLCALL
65 xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
66 const char *format,
67 va_list argptr);
68XMLPUBFUN int XMLCALL
69 xmlTextWriterWriteComment (xmlTextWriterPtr writer,
70 const xmlChar * content);
71
72/*
73 * Elements
74 */
75XMLPUBFUN int XMLCALL
76 xmlTextWriterStartElement (xmlTextWriterPtr writer,
77 const xmlChar * name);
78XMLPUBFUN int XMLCALL
79 xmlTextWriterStartElementNS (xmlTextWriterPtr writer,
80 const xmlChar * prefix,
81 const xmlChar * name,
82 const xmlChar * namespaceURI);
Daniel Veillard5841f0e2003-11-20 11:59:09 +000083 XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +000084XMLPUBFUN int XMLCALL
85 xmlTextWriterFullEndElement (xmlTextWriterPtr writer);
86
87/*
88 * Elements conveniency functions
89 */
90XMLPUBFUN int XMLCALL
91 xmlTextWriterWriteFormatElement (xmlTextWriterPtr writer,
92 const xmlChar * name,
93 const char *format, ...);
94XMLPUBFUN int XMLCALL
95 xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
96 const xmlChar * name,
97 const char *format,
98 va_list argptr);
99XMLPUBFUN int XMLCALL
100 xmlTextWriterWriteElement (xmlTextWriterPtr writer,
101 const xmlChar * name,
102 const xmlChar * content);
103XMLPUBFUN int XMLCALL
104 xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
105 const xmlChar * prefix,
106 const xmlChar * name,
107 const xmlChar * namespaceURI,
108 const char *format, ...);
109XMLPUBFUN int XMLCALL
110 xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
111 const xmlChar * prefix,
112 const xmlChar * name,
113 const xmlChar * namespaceURI,
114 const char *format,
115 va_list argptr);
116XMLPUBFUN int XMLCALL
117 xmlTextWriterWriteElementNS (xmlTextWriterPtr writer,
118 const xmlChar * prefix,
119 const xmlChar * name,
120 const xmlChar * namespaceURI,
121 const xmlChar * content);
122
123/*
124 * Text
125 */
126XMLPUBFUN int XMLCALL
127 xmlTextWriterWriteFormatRaw (xmlTextWriterPtr writer,
128 const char *format, ...);
129XMLPUBFUN int XMLCALL
130 xmlTextWriterWriteVFormatRaw (xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000131 const char *format, va_list argptr);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000132XMLPUBFUN int XMLCALL
133 xmlTextWriterWriteRawLen (xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000134 const xmlChar * content, int len);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000135XMLPUBFUN int XMLCALL
136 xmlTextWriterWriteRaw (xmlTextWriterPtr writer,
137 const xmlChar * content);
138XMLPUBFUN int XMLCALL
139 xmlTextWriterWriteFormatString (xmlTextWriterPtr writer,
140 const char *format, ...);
141XMLPUBFUN int XMLCALL
142 xmlTextWriterWriteVFormatString (xmlTextWriterPtr writer,
143 const char *format,
144 va_list argptr);
145XMLPUBFUN int XMLCALL
146 xmlTextWriterWriteString (xmlTextWriterPtr writer,
147 const xmlChar * content);
148XMLPUBFUN int XMLCALL
149 xmlTextWriterWriteBase64 (xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000150 const char *data, int start, int len);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000151XMLPUBFUN int XMLCALL
152 xmlTextWriterWriteBinHex (xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000153 const char *data, int start, int len);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000154
155/*
156 * Attributes
157 */
158XMLPUBFUN int XMLCALL
159 xmlTextWriterStartAttribute (xmlTextWriterPtr writer,
160 const xmlChar * name);
161XMLPUBFUN int XMLCALL
162 xmlTextWriterStartAttributeNS (xmlTextWriterPtr writer,
163 const xmlChar * prefix,
164 const xmlChar * name,
165 const xmlChar * namespaceURI);
166XMLPUBFUN int XMLCALL
167 xmlTextWriterEndAttribute (xmlTextWriterPtr writer);
168
169/*
170 * Attributes conveniency functions
171 */
172XMLPUBFUN int XMLCALL
173 xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
174 const xmlChar * name,
175 const char *format, ...);
176XMLPUBFUN int XMLCALL
177 xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
178 const xmlChar * name,
179 const char *format,
180 va_list argptr);
181XMLPUBFUN int XMLCALL
182 xmlTextWriterWriteAttribute (xmlTextWriterPtr writer,
183 const xmlChar * name,
184 const xmlChar * content);
185XMLPUBFUN int XMLCALL
186 xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
187 const xmlChar * prefix,
188 const xmlChar * name,
189 const xmlChar * namespaceURI,
190 const char *format, ...);
191XMLPUBFUN int XMLCALL
192 xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
193 const xmlChar * prefix,
194 const xmlChar * name,
195 const xmlChar * namespaceURI,
196 const char *format,
197 va_list argptr);
198XMLPUBFUN int XMLCALL
199 xmlTextWriterWriteAttributeNS (xmlTextWriterPtr writer,
200 const xmlChar * prefix,
201 const xmlChar * name,
202 const xmlChar * namespaceURI,
203 const xmlChar * content);
204
205/*
206 * PI's
207 */
208XMLPUBFUN int XMLCALL
209 xmlTextWriterStartPI (xmlTextWriterPtr writer,
210 const xmlChar * target);
Daniel Veillard6cbd6c02003-12-04 12:31:49 +0000211XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000212
213/*
214 * PI conveniency functions
215 */
216XMLPUBFUN int XMLCALL
217 xmlTextWriterWriteFormatPI (xmlTextWriterPtr writer,
218 const xmlChar * target,
219 const char *format, ...);
220XMLPUBFUN int XMLCALL
221 xmlTextWriterWriteVFormatPI (xmlTextWriterPtr writer,
222 const xmlChar * target,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000223 const char *format, va_list argptr);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000224XMLPUBFUN int XMLCALL
225 xmlTextWriterWritePI (xmlTextWriterPtr writer,
226 const xmlChar * target,
227 const xmlChar * content);
Daniel Veillard1e906612003-12-05 14:57:46 +0000228/**
229 * xmlTextWriterWriteProcessingInstruction:
230 *
231 * This macro maps to xmlTextWriterWritePI
232 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000233#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
234
235/*
236 * CDATA
237 */
Daniel Veillard6cbd6c02003-12-04 12:31:49 +0000238XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
239XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000240
241/*
242 * CDATA conveniency functions
243 */
244XMLPUBFUN int XMLCALL
245 xmlTextWriterWriteFormatCDATA (xmlTextWriterPtr writer,
246 const char *format, ...);
247XMLPUBFUN int XMLCALL
248 xmlTextWriterWriteVFormatCDATA (xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000249 const char *format, va_list argptr);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000250XMLPUBFUN int XMLCALL
251 xmlTextWriterWriteCDATA (xmlTextWriterPtr writer,
252 const xmlChar * content);
253
254/*
255 * DTD
256 */
257XMLPUBFUN int XMLCALL
258 xmlTextWriterStartDTD (xmlTextWriterPtr writer,
259 const xmlChar * name,
260 const xmlChar * pubid,
261 const xmlChar * sysid);
Daniel Veillard6cbd6c02003-12-04 12:31:49 +0000262XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000263
264/*
265 * DTD conveniency functions
266 */
267XMLPUBFUN int XMLCALL
268 xmlTextWriterWriteFormatDTD (xmlTextWriterPtr writer,
269 const xmlChar * name,
270 const xmlChar * pubid,
271 const xmlChar * sysid,
272 const char *format, ...);
273XMLPUBFUN int XMLCALL
274 xmlTextWriterWriteVFormatDTD (xmlTextWriterPtr writer,
275 const xmlChar * name,
276 const xmlChar * pubid,
277 const xmlChar * sysid,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000278 const char *format, va_list argptr);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000279XMLPUBFUN int XMLCALL
280 xmlTextWriterWriteDTD (xmlTextWriterPtr writer,
281 const xmlChar * name,
282 const xmlChar * pubid,
283 const xmlChar * sysid,
284 const xmlChar * subset);
Daniel Veillard1e906612003-12-05 14:57:46 +0000285/**
286 * xmlTextWriterWriteDocType:
287 *
288 * this macro maps to xmlTextWriterWriteDTD
289 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000290#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
291
292/*
293 * DTD element definition
294 */
295XMLPUBFUN int XMLCALL
296 xmlTextWriterStartDTDElement (xmlTextWriterPtr writer,
297 const xmlChar * name);
Daniel Veillard1e906612003-12-05 14:57:46 +0000298/**
299 * xmlTextWriterEndDTDElement:
300 *
301 * This macro maps to xmlTextWriterEndDTD
302 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000303#define xmlTextWriterEndDTDElement xmlTextWriterEndDTD
304
305/*
306 * DTD element definition conveniency functions
307 */
308XMLPUBFUN int XMLCALL
309 xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
310 const xmlChar * name,
311 const char *format, ...);
312XMLPUBFUN int XMLCALL
313 xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
314 const xmlChar * name,
315 const char *format,
316 va_list argptr);
317XMLPUBFUN int XMLCALL
318 xmlTextWriterWriteDTDElement (xmlTextWriterPtr writer,
319 const xmlChar * name,
320 const xmlChar * content);
321
322/*
323 * DTD attribute list definition
324 */
325XMLPUBFUN int XMLCALL
326 xmlTextWriterStartDTDAttlist (xmlTextWriterPtr writer,
327 const xmlChar * name);
Daniel Veillard1e906612003-12-05 14:57:46 +0000328/**
329 * xmlTextWriterEndDTDAttlist:
330 *
331 * This macro maps to xmlTextWriterEndDTD
332 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000333#define xmlTextWriterEndDTDAttlist xmlTextWriterEndDTD
334
335/*
336 * DTD attribute list definition conveniency functions
337 */
338XMLPUBFUN int XMLCALL
339 xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
340 const xmlChar * name,
341 const char *format, ...);
342XMLPUBFUN int XMLCALL
343 xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
344 const xmlChar * name,
345 const char *format,
346 va_list argptr);
347XMLPUBFUN int XMLCALL
348 xmlTextWriterWriteDTDAttlist (xmlTextWriterPtr writer,
349 const xmlChar * name,
350 const xmlChar * content);
351
352/*
353 * DTD entity definition
354 */
355XMLPUBFUN int XMLCALL
356 xmlTextWriterStartDTDEntity (xmlTextWriterPtr writer,
Daniel Veillard5841f0e2003-11-20 11:59:09 +0000357 int pe, const xmlChar * name);
Daniel Veillard1e906612003-12-05 14:57:46 +0000358/**
359 * xmlTextWriterEndDTDEntity:
360 *
361 * This macro maps to xmlTextWriterEndDTD
362 */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000363#define xmlTextWriterEndDTDEntity xmlTextWriterEndDTD
364
365/*
366 * DTD entity definition conveniency functions
367 */
368XMLPUBFUN int XMLCALL
369 xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
370 int pe,
371 const xmlChar * name,
372 const char *format, ...);
373XMLPUBFUN int XMLCALL
374 xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
375 int pe,
376 const xmlChar * name,
377 const char *format,
378 va_list argptr);
379XMLPUBFUN int XMLCALL
380 xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
381 int pe,
382 const xmlChar * name,
383 const xmlChar * content);
384XMLPUBFUN int XMLCALL
385 xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
386 int pe,
387 const xmlChar * name,
388 const xmlChar * pubid,
389 const xmlChar * sysid,
390 const xmlChar * ndataid);
391XMLPUBFUN int XMLCALL
392 xmlTextWriterWriteDTDEntity (xmlTextWriterPtr writer,
393 int pe,
394 const xmlChar * name,
395 const xmlChar * pubid,
396 const xmlChar * sysid,
397 const xmlChar * ndataid,
398 const xmlChar * content);
399
400/*
401 * DTD notation definition
402 */
403XMLPUBFUN int XMLCALL
404 xmlTextWriterWriteDTDNotation (xmlTextWriterPtr writer,
405 const xmlChar * name,
406 const xmlChar * pubid,
407 const xmlChar * sysid);
408
409/*
410 * misc
411 */
Daniel Veillard6cbd6c02003-12-04 12:31:49 +0000412XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer);
Daniel Veillard1d211e22003-10-20 22:32:39 +0000413
414#ifdef __cplusplus
415}
416#endif
417#endif /* __XML_XMLWRITER_H__ */