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
23: extern "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__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>