| this module implements an HTML 4.0 non-verifying parser with API compatible with the XML parser ones. It should be able to parse "real world" HTML, even if severely broken from a specification point of view.  Table of Contents#define htmlDefaultSubelement #define htmlElementAllowedHereDesc #define htmlRequiredAttrs Typedef xmlDocPtr htmlDocPtr
 Structure htmlElemDescstruct _htmlElemDesc
 Typedef htmlElemDesc * htmlElemDescPtr
 Structure htmlEntityDescstruct _htmlEntityDesc
 Typedef htmlEntityDesc * htmlEntityDescPtr
 Typedef xmlNodePtr htmlNodePtr
 Typedef xmlParserCtxt htmlParserCtxt
 Typedef xmlParserCtxtPtr htmlParserCtxtPtr
 Typedef xmlParserInput htmlParserInput
 Typedef xmlParserInputPtr htmlParserInputPtr
 Typedef xmlParserNodeInfo htmlParserNodeInfo
 Enum htmlParserOption
 Typedef xmlSAXHandler htmlSAXHandler
 Typedef xmlSAXHandlerPtr htmlSAXHandlerPtr
 Enum htmlStatus
 int	UTF8ToHtml			(unsigned char * out, int * outlen,
 const unsigned char * in,
 int * inlen)
 htmlStatus	htmlAttrAllowed		(const htmlElemDesc * elt, const xmlChar * attr,
 int legacy)
 int	htmlAutoCloseTag		(htmlDocPtr doc, const xmlChar * name,
 htmlNodePtr elem)
 htmlParserCtxtPtr	htmlCreateMemoryParserCtxt	(const char * buffer, int size)
 htmlParserCtxtPtr	htmlCreatePushParserCtxt	(htmlSAXHandlerPtr sax, void * user_data,
 const char * chunk,
 int size,
 const char * filename,
 xmlCharEncoding enc)
 htmlDocPtr	htmlCtxtReadDoc		(htmlParserCtxtPtr ctxt, const xmlChar * cur,
 const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlCtxtReadFd		(htmlParserCtxtPtr ctxt, int fd,
 const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlCtxtReadFile	(htmlParserCtxtPtr ctxt, const char * filename,
 const char * encoding,
 int options)
 htmlDocPtr	htmlCtxtReadIO		(htmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
 xmlInputCloseCallback ioclose,
 void * ioctx,
 const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlCtxtReadMemory	(htmlParserCtxtPtr ctxt, const char * buffer,
 int size,
 const char * URL,
 const char * encoding,
 int options)
 void	htmlCtxtReset			(htmlParserCtxtPtr ctxt) int	htmlCtxtUseOptions		(htmlParserCtxtPtr ctxt, int options)
 int	htmlElementAllowedHere		(const htmlElemDesc * parent, const xmlChar * elt)
 htmlStatus	htmlElementStatusHere	(const htmlElemDesc * parent, const htmlElemDesc * elt)
 int	htmlEncodeEntities		(unsigned char * out, int * outlen,
 const unsigned char * in,
 int * inlen,
 int quoteChar)
 const htmlEntityDesc *	htmlEntityLookup	(const xmlChar * name) const htmlEntityDesc *	htmlEntityValueLookup	(unsigned int value) void	htmlFreeParserCtxt		(htmlParserCtxtPtr ctxt) int	htmlHandleOmittedElem		(int val) int	htmlIsAutoClosed		(htmlDocPtr doc, htmlNodePtr elem)
 int	htmlIsScriptAttribute		(const xmlChar * name) htmlParserCtxtPtr	htmlNewParserCtxt	(void) htmlStatus	htmlNodeStatus		(const htmlNodePtr node, int legacy)
 int	htmlParseCharRef		(htmlParserCtxtPtr ctxt) int	htmlParseChunk			(htmlParserCtxtPtr ctxt, const char * chunk,
 int size,
 int terminate)
 htmlDocPtr	htmlParseDoc		(const xmlChar * cur, const char * encoding)
 int	htmlParseDocument		(htmlParserCtxtPtr ctxt) void	htmlParseElement		(htmlParserCtxtPtr ctxt) const htmlEntityDesc *	htmlParseEntityRef	(htmlParserCtxtPtr ctxt, const xmlChar ** str)
 htmlDocPtr	htmlParseFile		(const char * filename, const char * encoding)
 htmlDocPtr	htmlReadDoc		(const xmlChar * cur, const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlReadFd		(int fd, const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlReadFile		(const char * filename, const char * encoding,
 int options)
 htmlDocPtr	htmlReadIO		(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose,
 void * ioctx,
 const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlReadMemory		(const char * buffer, int size,
 const char * URL,
 const char * encoding,
 int options)
 htmlDocPtr	htmlSAXParseDoc		(const xmlChar * cur, const char * encoding,
 htmlSAXHandlerPtr sax,
 void * userData)
 htmlDocPtr	htmlSAXParseFile	(const char * filename, const char * encoding,
 htmlSAXHandlerPtr sax,
 void * userData)
 const htmlElemDesc *	htmlTagLookup	(const xmlChar * tag) DescriptionMacro: htmlDefaultSubelement#define htmlDefaultSubelement Returns the default subelement for this element Macro: htmlElementAllowedHereDesc#define htmlElementAllowedHereDesc Checks whether an HTML element description may be a direct child of the specified element. Returns 1 if allowed; 0 otherwise. Macro: htmlRequiredAttrs#define htmlRequiredAttrs Returns the attributes required for the specified element. Structure htmlElemDescstruct _htmlElemDesc {
    const char *	name	: The tag name
    char	startTag	: Whether the start tag can be implied
    char	endTag	: Whether the end tag can be implied
    char	saveEndTag	: Whether the end tag should be saved
    char	empty	: Is this an empty element ?
    char	depr	: Is this a deprecated element ?
    char	dtd	: 1: only in Loose DTD, 2: only Frameset
    char	isinline	: is this a block 0 or inline 1 element
    const char *	desc	: the description NRK Jan.2003 * New fiel
    const char **	subelts	: allowed sub-elements of this element
    const char *	defaultsubelt	: subelement for suggested auto-repair if
    const char **	attrs_opt	: Optional Attributes
    const char **	attrs_depr	: Additional deprecated attributes
    const char **	attrs_req	: Required attributes
}
 Structure htmlEntityDescstruct _htmlEntityDesc {
    unsigned int	value	: the UNICODE value for the character
    const char *	name	: The entity name
    const char *	desc	: the description
}
 Enum htmlParserOption {
    HTML_PARSE_RECOVER = 1 : Relaxed parsing
    HTML_PARSE_NODEFDTD = 4 : do not default a doctype if not found
    HTML_PARSE_NOERROR = 32 : suppress error reports
    HTML_PARSE_NOWARNING = 64 : suppress warning reports
    HTML_PARSE_PEDANTIC = 128 : pedantic error reporting
    HTML_PARSE_NOBLANKS = 256 : remove blank nodes
    HTML_PARSE_NONET = 2048 : Forbid network access
    HTML_PARSE_NOIMPLIED = 8192 : Do not add implied html/body... elements
    HTML_PARSE_COMPACT = 65536 : compact small text nodes
    HTML_PARSE_IGNORE_ENC = 2097152 : ignore internal document encoding hint
}
Enum htmlStatus {
    HTML_NA = 0 : something we don't check at all
    HTML_INVALID = 1
    HTML_DEPRECATED = 2
    HTML_VALID = 4
    HTML_REQUIRED = 12 : VALID bit set so ( & HTML_VALID ) is TRUE
}
Function: UTF8ToHtmlint	UTF8ToHtml			(unsigned char * out, int * outlen,
 const unsigned char * in,
 int * inlen)
 
 Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out. | out: | a pointer to an array of bytes to store the result |  | outlen: | the length of @out |  | in: | a pointer to an array of UTF-8 chars |  | inlen: | the length of @in |  | Returns: | 0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed. | 
Function: htmlAttrAllowedhtmlStatus	htmlAttrAllowed		(const htmlElemDesc * elt, const xmlChar * attr,
 int legacy)
 
 Checks whether an attribute is valid for an element Has full knowledge of Required and Deprecated attributes | elt: | HTML element |  | attr: | HTML attribute |  | legacy: | whether to allow deprecated attributes |  | Returns: | one of HTML_REQUIRED, HTML_VALID, HTML_DEPRECATED, HTML_INVALID | 
Function: htmlAutoCloseTagint	htmlAutoCloseTag		(htmlDocPtr doc, const xmlChar * name,
 htmlNodePtr elem)
 
 The HTML DTD allows a tag to implicitly close other tags. The list is kept in htmlStartClose array. This function checks if the element or one of it's children would autoclose the given tag. | doc: | the HTML document |  | name: | The tag name |  | elem: | the HTML element |  | Returns: | 1 if autoclose, 0 otherwise | 
Function: htmlCreateMemoryParserCtxthtmlParserCtxtPtr	htmlCreateMemoryParserCtxt	(const char * buffer, int size)
 
 Create a parser context for an HTML in-memory document. | buffer: | a pointer to a char array |  | size: | the size of the array |  | Returns: | the new parser context or NULL | 
Function: htmlCreatePushParserCtxthtmlParserCtxtPtr	htmlCreatePushParserCtxt	(htmlSAXHandlerPtr sax, void * user_data,
 const char * chunk,
 int size,
 const char * filename,
 xmlCharEncoding enc)
 
 Create a parser context for using the HTML parser in push mode The value of @filename is used for fetching external entities and error/warning reports. | sax: | a SAX handler |  | user_data: | The user data returned on SAX callbacks |  | chunk: | a pointer to an array of chars |  | size: | number of chars in the array |  | filename: | an optional file name or URI |  | enc: | an optional encoding |  | Returns: | the new parser context or NULL | 
Function: htmlCtxtReadDochtmlDocPtr	htmlCtxtReadDoc		(htmlParserCtxtPtr ctxt, const xmlChar * cur,
 const char * URL,
 const char * encoding,
 int options)
 
 parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context | ctxt: | an HTML parser context |  | cur: | a pointer to a zero terminated string |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlCtxtReadFdhtmlDocPtr	htmlCtxtReadFd		(htmlParserCtxtPtr ctxt, int fd,
 const char * URL,
 const char * encoding,
 int options)
 
 parse an XML from a file descriptor and build a tree. This reuses the existing @ctxt parser context | ctxt: | an HTML parser context |  | fd: | an open file descriptor |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlCtxtReadFilehtmlDocPtr	htmlCtxtReadFile	(htmlParserCtxtPtr ctxt, const char * filename,
 const char * encoding,
 int options)
 
 parse an XML file from the filesystem or the network. This reuses the existing @ctxt parser context | ctxt: | an HTML parser context |  | filename: | a file or URL |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlCtxtReadIOhtmlDocPtr	htmlCtxtReadIO		(htmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
 xmlInputCloseCallback ioclose,
 void * ioctx,
 const char * URL,
 const char * encoding,
 int options)
 
 parse an HTML document from I/O functions and source and build a tree. This reuses the existing @ctxt parser context | ctxt: | an HTML parser context |  | ioread: | an I/O read function |  | ioclose: | an I/O close function |  | ioctx: | an I/O handler |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlCtxtReadMemoryhtmlDocPtr	htmlCtxtReadMemory	(htmlParserCtxtPtr ctxt, const char * buffer,
 int size,
 const char * URL,
 const char * encoding,
 int options)
 
 parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context | ctxt: | an HTML parser context |  | buffer: | a pointer to a char array |  | size: | the size of the array |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlCtxtResetvoid	htmlCtxtReset			(htmlParserCtxtPtr ctxt)
 Reset a parser context | ctxt: | an HTML parser context | 
Function: htmlCtxtUseOptionsint	htmlCtxtUseOptions		(htmlParserCtxtPtr ctxt, int options)
 
 Applies the options to the parser context | ctxt: | an HTML parser context |  | options: | a combination of htmlParserOption(s) |  | Returns: | 0 in case of success, the set of unknown or unimplemented options in case of error. | 
Function: htmlElementAllowedHereint	htmlElementAllowedHere		(const htmlElemDesc * parent, const xmlChar * elt)
 
 Checks whether an HTML element may be a direct child of a parent element. Note - doesn't check for deprecated elements | parent: | HTML parent element |  | elt: | HTML element |  | Returns: | 1 if allowed; 0 otherwise. | 
Function: htmlElementStatusHerehtmlStatus	htmlElementStatusHere	(const htmlElemDesc * parent, const htmlElemDesc * elt)
 
 Checks whether an HTML element may be a direct child of a parent element. and if so whether it is valid or deprecated. | parent: | HTML parent element |  | elt: | HTML element |  | Returns: | one of HTML_VALID, HTML_DEPRECATED, HTML_INVALID | 
Function: htmlEncodeEntitiesint	htmlEncodeEntities		(unsigned char * out, int * outlen,
 const unsigned char * in,
 int * inlen,
 int quoteChar)
 
 Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out. | out: | a pointer to an array of bytes to store the result |  | outlen: | the length of @out |  | in: | a pointer to an array of UTF-8 chars |  | inlen: | the length of @in |  | quoteChar: | the quote character to escape (' or ") or zero. |  | Returns: | 0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed. | 
Function: htmlEntityLookupconst htmlEntityDesc *	htmlEntityLookup	(const xmlChar * name)
 Lookup the given entity in EntitiesTable TODO: the linear scan is really ugly, an hash table is really needed. | name: | the entity name |  | Returns: | the associated htmlEntityDescPtr if found, NULL otherwise. | 
Function: htmlEntityValueLookupconst htmlEntityDesc *	htmlEntityValueLookup	(unsigned int value)
 Lookup the given entity in EntitiesTable TODO: the linear scan is really ugly, an hash table is really needed. | value: | the entity's unicode value |  | Returns: | the associated htmlEntityDescPtr if found, NULL otherwise. | 
Function: htmlFreeParserCtxtvoid	htmlFreeParserCtxt		(htmlParserCtxtPtr ctxt)
 Free all the memory used by a parser context. However the parsed document in ctxt->myDoc is not freed. | ctxt: | an HTML parser context | 
Function: htmlHandleOmittedElemint	htmlHandleOmittedElem		(int val)
 Set and return the previous value for handling HTML omitted tags. | val: | int 0 or 1 |  | Returns: | the last value for 0 for no handling, 1 for auto insertion. | 
Function: htmlIsAutoClosedint	htmlIsAutoClosed		(htmlDocPtr doc, htmlNodePtr elem)
 
 The HTML DTD allows a tag to implicitly close other tags. The list is kept in htmlStartClose array. This function checks if a tag is autoclosed by one of it's child | doc: | the HTML document |  | elem: | the HTML element |  | Returns: | 1 if autoclosed, 0 otherwise | 
Function: htmlIsScriptAttributeint	htmlIsScriptAttribute		(const xmlChar * name)
 Check if an attribute is of content type Script Function: htmlNewParserCtxthtmlParserCtxtPtr	htmlNewParserCtxt	(void)
 Allocate and initialize a new parser context. Function: htmlNodeStatushtmlStatus	htmlNodeStatus		(const htmlNodePtr node, int legacy)
 
 Checks whether the tree node is valid. Experimental (the author only uses the HTML enhancements in a SAX parser) Function: htmlParseCharRefint	htmlParseCharRef		(htmlParserCtxtPtr ctxt)
 parse Reference declarations [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';' | ctxt: | an HTML parser context |  | Returns: | the value parsed (as an int) | 
Function: htmlParseChunkint	htmlParseChunk			(htmlParserCtxtPtr ctxt, const char * chunk,
 int size,
 int terminate)
 
 Parse a Chunk of memory | ctxt: | an HTML parser context |  | chunk: | an char array |  | size: | the size in byte of the chunk |  | terminate: | last chunk indicator |  | Returns: | zero if no error, the xmlParserErrors otherwise. | 
Function: htmlParseDochtmlDocPtr	htmlParseDoc		(const xmlChar * cur, const char * encoding)
 
 parse an HTML in-memory document and build a tree. | cur: | a pointer to an array of xmlChar |  | encoding: | a free form C string describing the HTML document encoding, or NULL |  | Returns: | the resulting document tree | 
Function: htmlParseDocumentint	htmlParseDocument		(htmlParserCtxtPtr ctxt)
 parse an HTML document (and build a tree if using the standard SAX interface). | ctxt: | an HTML parser context |  | Returns: | 0, -1 in case of error. the parser context is augmented as a result of the parsing. | 
Function: htmlParseElementvoid	htmlParseElement		(htmlParserCtxtPtr ctxt)
 parse an HTML element, this is highly recursive this is kept for compatibility with previous code versions [39] element ::= EmptyElemTag | STag content ETag [41] Attribute ::= Name Eq AttValue | ctxt: | an HTML parser context | 
Function: htmlParseEntityRefconst htmlEntityDesc *	htmlParseEntityRef	(htmlParserCtxtPtr ctxt, const xmlChar ** str)
 
 parse an HTML ENTITY references [68] EntityRef ::= '&' Name ';' | ctxt: | an HTML parser context |  | str: | location to store the entity name |  | Returns: | the associated htmlEntityDescPtr if found, or NULL otherwise, if non-NULL *str will have to be freed by the caller. | 
Function: htmlParseFilehtmlDocPtr	htmlParseFile		(const char * filename, const char * encoding)
 
 parse an HTML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. | filename: | the filename |  | encoding: | a free form C string describing the HTML document encoding, or NULL |  | Returns: | the resulting document tree | 
Function: htmlReadDochtmlDocPtr	htmlReadDoc		(const xmlChar * cur, const char * URL,
 const char * encoding,
 int options)
 
 parse an XML in-memory document and build a tree. | cur: | a pointer to a zero terminated string |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlReadFdhtmlDocPtr	htmlReadFd		(int fd, const char * URL,
 const char * encoding,
 int options)
 
 parse an XML from a file descriptor and build a tree. | fd: | an open file descriptor |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlReadFilehtmlDocPtr	htmlReadFile		(const char * filename, const char * encoding,
 int options)
 
 parse an XML file from the filesystem or the network. | filename: | a file or URL |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlReadIOhtmlDocPtr	htmlReadIO		(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose,
 void * ioctx,
 const char * URL,
 const char * encoding,
 int options)
 
 parse an HTML document from I/O functions and source and build a tree. | ioread: | an I/O read function |  | ioclose: | an I/O close function |  | ioctx: | an I/O handler |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlReadMemoryhtmlDocPtr	htmlReadMemory		(const char * buffer, int size,
 const char * URL,
 const char * encoding,
 int options)
 
 parse an XML in-memory document and build a tree. | buffer: | a pointer to a char array |  | size: | the size of the array |  | URL: | the base URL to use for the document |  | encoding: | the document encoding, or NULL |  | options: | a combination of htmlParserOption(s) |  | Returns: | the resulting document tree | 
Function: htmlSAXParseDochtmlDocPtr	htmlSAXParseDoc		(const xmlChar * cur, const char * encoding,
 htmlSAXHandlerPtr sax,
 void * userData)
 
 Parse an HTML in-memory document. If sax is not NULL, use the SAX callbacks to handle parse events. If sax is NULL, fallback to the default DOM behavior and return a tree. | cur: | a pointer to an array of xmlChar |  | encoding: | a free form C string describing the HTML document encoding, or NULL |  | sax: | the SAX handler block |  | userData: | if using SAX, this pointer will be provided on callbacks. |  | Returns: | the resulting document tree unless SAX is NULL or the document is not well formed. | 
Function: htmlSAXParseFilehtmlDocPtr	htmlSAXParseFile	(const char * filename, const char * encoding,
 htmlSAXHandlerPtr sax,
 void * userData)
 
 parse an HTML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines. | filename: | the filename |  | encoding: | a free form C string describing the HTML document encoding, or NULL |  | sax: | the SAX handler block |  | userData: | if using SAX, this pointer will be provided on callbacks. |  | Returns: | the resulting document tree unless SAX is NULL or the document is not well formed. | 
Function: htmlTagLookupconst htmlElemDesc *	htmlTagLookup	(const xmlChar * tag)
 Lookup the HTML tag in the ElementTable | tag: | The tag name in lowercase |  | Returns: | the related htmlElemDescPtr or NULL if not found. | 
Daniel Veillard |