HTMLtree: specific APIs to process HTML tree, especially serialization

## HTMLtree

HTMLtree - specific APIs to process HTML tree, especially serialization

this module implements a few function needed to process tree in an HTML specific way.

Author(s): Daniel Veillard

## Synopsis

    #define HTML_ENTITY_REF_NODE;
    #define HTML_COMMENT_NODE;
    #define HTML_PRESERVE_NODE;
    #define HTML_TEXT_NODE;
    #define HTML_PI_NODE;
    int	htmlNodeDumpFileFormat		(FILE * out,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur,
    					 const char * encoding,
    					 int format);
    void	htmlDocDumpMemory		(xmlDocPtr cur,
    					 xmlChar ** mem,
    					 int * size);
    int	htmlSaveFile			(const char * filename,
    					 xmlDocPtr cur);
    int	htmlDocDump			(FILE * f,
    					 xmlDocPtr cur);
    void	htmlDocDumpMemoryFormat		(xmlDocPtr cur,
    					 xmlChar ** mem,
    					 int * size,
    					 int format);
    int	htmlIsBooleanAttr		(const xmlChar * name);
    int	htmlSaveFileFormat		(const char * filename,
    					 xmlDocPtr cur,
    					 const char * encoding,
    					 int format);
    void	htmlNodeDumpFormatOutput	(xmlOutputBufferPtr buf,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur,
    					 const char * encoding,
    					 int format);
    int	htmlSetMetaEncoding		(htmlDocPtr doc,
    					 const xmlChar * encoding);
    int	htmlSaveFileEnc			(const char * filename,
    					 xmlDocPtr cur,
    					 const char * encoding);
    void	htmlNodeDumpOutput		(xmlOutputBufferPtr buf,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur,
    					 const char * encoding);
    int	htmlNodeDump			(xmlBufferPtr buf,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur);
    htmlDocPtr	htmlNewDoc		(const xmlChar * URI,
    					 const xmlChar * ExternalID);
    const xmlChar *	htmlGetMetaEncoding	(htmlDocPtr doc);
    void	htmlNodeDumpFile		(FILE * out,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur);
    void	htmlDocContentDumpFormatOutput	(xmlOutputBufferPtr buf,
    					 xmlDocPtr cur,
    					 const char * encoding,
    					 int format);
    htmlDocPtr	htmlNewDocNoDtD		(const xmlChar * URI,
    					 const xmlChar * ExternalID);
    void	htmlDocContentDumpOutput	(xmlOutputBufferPtr buf,
    					 xmlDocPtr cur,
    					 const char * encoding);

## Description

## Details

### Macro HTML_COMMENT_NODE

    #define HTML_COMMENT_NODE;

Macro. A comment in a HTML document is really implemented the same way as a comment in an XML document.

### Macro HTML_ENTITY_REF_NODE

    #define HTML_ENTITY_REF_NODE;

Macro. An entity reference in a HTML document is really implemented the same way as an entity reference in an XML document.

### Macro HTML_PI_NODE

    #define HTML_PI_NODE;

Macro. A processing instruction in a HTML document is really implemented the same way as a processing instruction in an XML document.

### Macro HTML_PRESERVE_NODE

    #define HTML_PRESERVE_NODE;

Macro. A preserved node in a HTML document is really implemented the same way as a CDATA section in an XML document.

### Macro HTML_TEXT_NODE

    #define HTML_TEXT_NODE;

Macro. A text node in a HTML document is really implemented the same way as a text node in an XML document.

### htmlDocContentDumpFormatOutput ()

    void	htmlDocContentDumpFormatOutput	(xmlOutputBufferPtr buf,
    					 xmlDocPtr cur,
    					 const char * encoding,
    					 int format)

Dump an HTML document.

`buf`: | the HTML buffer output
`cur`: | the document
`encoding`: | the encoding string
`format`: | should formatting spaces been added

### htmlDocContentDumpOutput ()

    void	htmlDocContentDumpOutput	(xmlOutputBufferPtr buf,
    					 xmlDocPtr cur,
    					 const char * encoding)

Dump an HTML document. Formating return/spaces are added.

`buf`: | the HTML buffer output
`cur`: | the document
`encoding`: | the encoding string

### htmlDocDump ()

    int	htmlDocDump			(FILE * f,
    					 xmlDocPtr cur)

Dump an HTML document to an open FILE.

`f`: | the FILE*
`cur`: | the document
`Returns`: | the number of byte written or -1 in case of failure.

### htmlDocDumpMemory ()

    void	htmlDocDumpMemory		(xmlDocPtr cur,
    					 xmlChar ** mem,
    					 int * size)

Dump an HTML document in memory and return the xmlChar * and it's size. It's up to the caller to free the memory.

`cur`: | the document
`mem`: | OUT: the memory pointer
`size`: | OUT: the memory length

### htmlDocDumpMemoryFormat ()

    void	htmlDocDumpMemoryFormat		(xmlDocPtr cur,
    					 xmlChar ** mem,
    					 int * size,
    					 int format)

Dump an HTML document in memory and return the xmlChar * and it's size. It's up to the caller to free the memory.

`cur`: | the document
`mem`: | OUT: the memory pointer
`size`: | OUT: the memory length
`format`: | should formatting spaces been added

### htmlGetMetaEncoding ()

    const xmlChar *	htmlGetMetaEncoding	(htmlDocPtr doc)

Encoding definition lookup in the Meta tags

`doc`: | the document
`Returns`: | the current encoding as flagged in the HTML source

### htmlIsBooleanAttr ()

    int	htmlIsBooleanAttr		(const xmlChar * name)

Determine if a given attribute is a boolean attribute.

`name`: | the name of the attribute to check
`Returns`: | false if the attribute is not boolean, true otherwise.

### htmlNewDoc ()

    htmlDocPtr	htmlNewDoc		(const xmlChar * URI,
    					 const xmlChar * ExternalID)

Creates a new HTML document

`URI`: | URI for the dtd, or NULL
`ExternalID`: | the external ID of the DTD, or NULL
`Returns`: | a new document

### htmlNewDocNoDtD ()

    htmlDocPtr	htmlNewDocNoDtD		(const xmlChar * URI,
    					 const xmlChar * ExternalID)

Creates a new HTML document without a DTD node if @URI and @ExternalID are NULL

`URI`: | URI for the dtd, or NULL
`ExternalID`: | the external ID of the DTD, or NULL
`Returns`: | a new document, do not initialize the DTD if not provided

### htmlNodeDump ()

    int	htmlNodeDump			(xmlBufferPtr buf,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur)

Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.

`buf`: | the HTML buffer output
`doc`: | the document
`cur`: | the current node
`Returns`: | the number of byte written or -1 in case of error

### htmlNodeDumpFile ()

    void	htmlNodeDumpFile		(FILE * out,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur)

Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.

`out`: | the FILE pointer
`doc`: | the document
`cur`: | the current node

### htmlNodeDumpFileFormat ()

    int	htmlNodeDumpFileFormat		(FILE * out,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur,
    					 const char * encoding,
    					 int format)

Dump an HTML node, recursive behaviour,children are printed too. TODO: if encoding == NULL try to save in the doc encoding

`out`: | the FILE pointer
`doc`: | the document
`cur`: | the current node
`encoding`: | the document encoding
`format`: | should formatting spaces been added
`Returns`: | the number of byte written or -1 in case of failure.

### htmlNodeDumpFormatOutput ()

    void	htmlNodeDumpFormatOutput	(xmlOutputBufferPtr buf,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur,
    					 const char * encoding,
    					 int format)

Dump an HTML node, recursive behaviour,children are printed too.

`buf`: | the HTML buffer output
`doc`: | the document
`cur`: | the current node
`encoding`: | the encoding string
`format`: | should formatting spaces been added

### htmlNodeDumpOutput ()

    void	htmlNodeDumpOutput		(xmlOutputBufferPtr buf,
    					 xmlDocPtr doc,
    					 xmlNodePtr cur,
    					 const char * encoding)

Dump an HTML node, recursive behaviour,children are printed too, and formatting returns/spaces are added.

`buf`: | the HTML buffer output
`doc`: | the document
`cur`: | the current node
`encoding`: | the encoding string

### htmlSaveFile ()

    int	htmlSaveFile			(const char * filename,
    					 xmlDocPtr cur)

Dump an HTML document to a file. If @filename is "-" the stdout file is used.

`filename`: | the filename (or URL)
`cur`: | the document
`Returns`: | the number of byte written or -1 in case of failure.

### htmlSaveFileEnc ()

    int	htmlSaveFileEnc			(const char * filename,
    					 xmlDocPtr cur,
    					 const char * encoding)

Dump an HTML document to a file using a given encoding and formatting returns/spaces are added.

`filename`: | the filename
`cur`: | the document
`encoding`: | the document encoding
`Returns`: | the number of byte written or -1 in case of failure.

### htmlSaveFileFormat ()

    int	htmlSaveFileFormat		(const char * filename,
    					 xmlDocPtr cur,
    					 const char * encoding,
    					 int format)

Dump an HTML document to a file using a given encoding.

`filename`: | the filename
`cur`: | the document
`encoding`: | the document encoding
`format`: | should formatting spaces been added
`Returns`: | the number of byte written or -1 in case of failure.

### htmlSetMetaEncoding ()

    int	htmlSetMetaEncoding		(htmlDocPtr doc,
    					 const xmlChar * encoding)

Sets the current encoding in the Meta tags NOTE: this will not change the document content encoding, just the META flag associated.

`doc`: | the document
`encoding`: | the encoding string
`Returns`: | 0 in case of success and -1 in case of error