Home | History | Annotate | Download | only in libxml
      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 (at) 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__ */
    489