diff options
| author | Mark A. Hershberger <mah@debian.(none)> | 2009-03-25 00:34:21 -0400 |
|---|---|---|
| committer | Mark A. Hershberger <mah@debian.(none)> | 2009-03-25 00:34:21 -0400 |
| commit | 0e920280a2e04b110827bb766b9f29e3d581c4ee (patch) | |
| tree | 8f2125f3d00fe3089e3b94adb06f04479ee15f2a /ext/libxml | |
| download | php-0e920280a2e04b110827bb766b9f29e3d581c4ee.tar.gz | |
Imported Upstream version 5.0.4upstream/5.0.4
Diffstat (limited to 'ext/libxml')
| -rw-r--r-- | ext/libxml/CREDITS | 2 | ||||
| -rw-r--r-- | ext/libxml/config.w32 | 22 | ||||
| -rw-r--r-- | ext/libxml/config0.m4 | 24 | ||||
| -rw-r--r-- | ext/libxml/libxml.c | 734 | ||||
| -rw-r--r-- | ext/libxml/php_libxml.h | 107 | ||||
| -rw-r--r-- | ext/libxml/php_libxml2.def | 1571 |
6 files changed, 2460 insertions, 0 deletions
diff --git a/ext/libxml/CREDITS b/ext/libxml/CREDITS new file mode 100644 index 000000000..9b744ae5f --- /dev/null +++ b/ext/libxml/CREDITS @@ -0,0 +1,2 @@ +LIBXML +Christian Stocker, Rob Richards, Marcus Boerger, Wez Furlong, Shane Caraveo diff --git a/ext/libxml/config.w32 b/ext/libxml/config.w32 new file mode 100644 index 000000000..f8eb24cb4 --- /dev/null +++ b/ext/libxml/config.w32 @@ -0,0 +1,22 @@ +// $Id: config.w32,v 1.6.2.3 2004/08/04 19:22:12 fmk Exp $ +// vim:ft=javascript + +ARG_WITH("libxml", "LibXML support", "yes"); + +if (PHP_LIBXML == "yes") { + if (CHECK_LIB("libxml2_a.lib;libxml2.lib", "libxml") && + CHECK_LIB("iconv_a.lib;iconv.lib", "libxml") && + CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS")) { + + EXTENSION("libxml", "libxml.c", false /* never shared */); + AC_DEFINE("HAVE_LIBXML", 1, "LibXML support"); + ADD_FLAG("CFLAGS", "/D LIBXML_THREAD_ENABLED"); + ADD_FLAG("CFLAGS_LIBXML", "/D LIBXML_STATIC "); + if (!PHP_LIBXML_SHARED) { + ADD_DEF_FILE("ext\\libxml\\php_libxml2.def"); + } + ADD_EXTENSION_DEP('libxml', 'iconv'); + } +} + + diff --git a/ext/libxml/config0.m4 b/ext/libxml/config0.m4 new file mode 100644 index 000000000..58bd8ec75 --- /dev/null +++ b/ext/libxml/config0.m4 @@ -0,0 +1,24 @@ +dnl +dnl $Id: config0.m4,v 1.1 2003/11/12 23:42:38 sniper Exp $ +dnl + +PHP_ARG_ENABLE(libxml, whether to enable LIBXML support, +[ --disable-libxml Disable new LIBXML support.], yes) + +if test -z "$PHP_LIBXML_DIR"; then + PHP_ARG_WITH(libxml-dir, libxml2 install dir, + [ --with-libxml-dir[=DIR] libxml2 install prefix.], no, no) +fi + +if test "$PHP_LIBXML" != "no"; then + + dnl This extension can not be build as shared + ext_shared=no + + PHP_SETUP_LIBXML(LIBXML_SHARED_LIBADD, [ + AC_DEFINE(HAVE_LIBXML,1,[ ]) + PHP_NEW_EXTENSION(libxml, [libxml.c], $ext_shared) + ], [ + AC_MSG_ERROR([xml2-config not found. Please check your libxml2 installation.]) + ]) +fi diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c new file mode 100644 index 000000000..d33c67c2e --- /dev/null +++ b/ext/libxml/libxml.c @@ -0,0 +1,734 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2004 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.0 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Shane Caraveo <shane@php.net> | + | Wez Furlong <wez@thebrainroom.com> | + +----------------------------------------------------------------------+ + */ + +/* $Id: libxml.c,v 1.18.2.6 2005/01/02 12:09:09 rrichards Exp $ */ + +#define IS_EXT_MODULE + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" + +#define PHP_XML_INTERNAL +#include "zend_variables.h" +#include "ext/standard/php_string.h" +#include "ext/standard/info.h" +#include "ext/standard/file.h" + +#if HAVE_LIBXML + +#include <libxml/parser.h> +#include <libxml/parserInternals.h> +#include <libxml/tree.h> +#include <libxml/uri.h> +#include <libxml/xmlerror.h> +#ifdef LIBXML_SCHEMAS_ENABLED +#include <libxml/relaxng.h> +#endif + +#include "php_libxml.h" + +#define PHP_LIBXML_ERROR 0 +#define PHP_LIBXML_CTX_ERROR 1 +#define PHP_LIBXML_CTX_WARNING 2 + +/* a true global for initialization */ +int _php_libxml_initialized = 0; + +typedef struct _php_libxml_func_handler { + php_libxml_export_node export_func; +} php_libxml_func_handler; + +static HashTable php_libxml_exports; + +#ifdef ZTS +int libxml_globals_id; +#else +PHP_LIBXML_API php_libxml_globals libxml_globals; +#endif + +/* {{{ dynamically loadable module stuff */ +#ifdef COMPILE_DL_LIBXML +ZEND_GET_MODULE(libxml) +# ifdef PHP_WIN32 +# include "zend_arg_defs.c" +# endif +#endif /* COMPILE_DL_LIBXML */ +/* }}} */ + +/* {{{ function prototypes */ +PHP_MINIT_FUNCTION(libxml); +PHP_RINIT_FUNCTION(libxml); +PHP_MSHUTDOWN_FUNCTION(libxml); +PHP_RSHUTDOWN_FUNCTION(libxml); +PHP_MINFO_FUNCTION(libxml); + +/* }}} */ + +/* {{{ extension definition structures */ +function_entry libxml_functions[] = { + PHP_FE(libxml_set_streams_context, NULL) + {NULL, NULL, NULL} +}; + +zend_module_entry libxml_module_entry = { + STANDARD_MODULE_HEADER, + "libxml", /* extension name */ + libxml_functions, /* extension function list */ + PHP_MINIT(libxml), /* extension-wide startup function */ + PHP_MSHUTDOWN(libxml), /* extension-wide shutdown function */ + PHP_RINIT(libxml), /* per-request startup function */ + PHP_RSHUTDOWN(libxml), /* per-request shutdown function */ + PHP_MINFO(libxml), /* information function */ + NO_VERSION_YET, + STANDARD_MODULE_PROPERTIES +}; + +/* }}} */ + +/* {{{ internal functions for interoperability */ +static int php_libxml_dec_node(php_libxml_node_ptr *nodeptr) +{ + int ret_refcount; + + ret_refcount = --nodeptr->refcount; + if (ret_refcount == 0) { + if (nodeptr->node != NULL && nodeptr->node->type != XML_DOCUMENT_NODE) { + nodeptr->node->_private = NULL; + } + /* node is destroyed by another object. reset ret_refcount to 1 and node to NULL + so the php_libxml_node_ptr is detroyed when the object is destroyed */ + nodeptr->refcount = 1; + nodeptr->node = NULL; + } + + return ret_refcount; +} + +static int php_libxml_clear_object(php_libxml_node_object *object TSRMLS_DC) +{ + if (object->properties) { + object->properties = NULL; + } + php_libxml_decrement_node_ptr(object TSRMLS_CC); + return php_libxml_decrement_doc_ref(object TSRMLS_CC); +} + +static int php_libxml_unregister_node(xmlNodePtr nodep TSRMLS_DC) +{ + php_libxml_node_object *wrapper; + + php_libxml_node_ptr *nodeptr = nodep->_private; + + if (nodeptr != NULL) { + wrapper = nodeptr->_private; + if (wrapper) { + php_libxml_clear_object(wrapper TSRMLS_CC); + } else { + php_libxml_dec_node(nodeptr); + } + } + + return -1; +} + +static void php_libxml_node_free(xmlNodePtr node) +{ + if(node) { + if (node->_private != NULL) { + ((php_libxml_node_ptr *) node->_private)->node = NULL; + } + switch (node->type) { + case XML_ATTRIBUTE_NODE: + xmlFreeProp((xmlAttrPtr) node); + break; + case XML_ENTITY_DECL: + case XML_ELEMENT_DECL: + case XML_ATTRIBUTE_DECL: + break; + case XML_NOTATION_NODE: + /* These require special handling */ + if (node->name != NULL) { + xmlFree((char *) node->name); + } + if (((xmlEntityPtr) node)->ExternalID != NULL) { + xmlFree((char *) ((xmlEntityPtr) node)->ExternalID); + } + if (((xmlEntityPtr) node)->SystemID != NULL) { + xmlFree((char *) ((xmlEntityPtr) node)->SystemID); + } + xmlFree(node); + break; + case XML_NAMESPACE_DECL: + if (node->ns) { + xmlFreeNs(node->ns); + node->ns = NULL; + } + node->type = XML_ELEMENT_NODE; + default: + xmlFreeNode(node); + } + } +} + +static void php_libxml_node_free_list(xmlNodePtr node TSRMLS_DC) +{ + xmlNodePtr curnode; + + if (node != NULL) { + curnode = node; + while (curnode != NULL) { + node = curnode; + switch (node->type) { + /* Skip property freeing for the following types */ + case XML_NOTATION_NODE: + break; + case XML_ENTITY_REF_NODE: + php_libxml_node_free_list((xmlNodePtr) node->properties TSRMLS_CC); + break; + case XML_ATTRIBUTE_DECL: + case XML_DTD_NODE: + case XML_DOCUMENT_TYPE_NODE: + case XML_ENTITY_DECL: + case XML_ATTRIBUTE_NODE: + case XML_NAMESPACE_DECL: + php_libxml_node_free_list(node->children TSRMLS_CC); + break; + default: + php_libxml_node_free_list(node->children TSRMLS_CC); + php_libxml_node_free_list((xmlNodePtr) node->properties TSRMLS_CC); + } + + curnode = node->next; + xmlUnlinkNode(node); + if (php_libxml_unregister_node(node TSRMLS_CC) == 0) { + node->doc = NULL; + } + php_libxml_node_free(node); + } + } +} + +/* }}} */ + +/* {{{ startup, shutdown and info functions */ +#ifdef ZTS +static void php_libxml_init_globals(php_libxml_globals *libxml_globals_p TSRMLS_DC) +{ + LIBXML(stream_context) = NULL; + LIBXML(error_buffer).c = NULL; +} +#endif + +/* Channel libxml file io layer through the PHP streams subsystem. + * This allows use of ftps:// and https:// urls */ + +int php_libxml_streams_IO_match_wrapper(const char *filename) +{ + char *resolved_path; + int retval; + + TSRMLS_FETCH(); + + if (zend_is_executing(TSRMLS_C)) { + resolved_path = xmlURIUnescapeString(filename, 0, NULL); + retval = php_stream_locate_url_wrapper(resolved_path, NULL, 0 TSRMLS_CC) ? 1 : 0; + if (resolved_path) { + xmlFree(resolved_path); + } + return retval; + } + return 0; +} + +void *php_libxml_streams_IO_open_wrapper(const char *filename, const char *mode, const int read_only) +{ + php_stream_statbuf ssbuf; + php_stream_context *context = NULL; + php_stream_wrapper *wrapper = NULL; + char *resolved_path, *path_to_open = NULL; + void *ret_val = NULL; + + TSRMLS_FETCH(); + resolved_path = xmlURIUnescapeString(filename, 0, NULL); + + if (resolved_path == NULL) { + return NULL; + } + + /* logic copied from _php_stream_stat, but we only want to fail + if the wrapper supports stat, otherwise, figure it out from + the open. This logic is only to support hiding warnings + that the streams layer puts out at times, but for libxml we + may try to open files that don't exist, but it is not a failure + in xml processing (eg. DTD files) */ + wrapper = php_stream_locate_url_wrapper(resolved_path, &path_to_open, ENFORCE_SAFE_MODE TSRMLS_CC); + if (wrapper && read_only && wrapper->wops->url_stat) { + if (wrapper->wops->url_stat(wrapper, path_to_open, PHP_STREAM_URL_STAT_QUIET, &ssbuf, NULL TSRMLS_CC) == -1) { + xmlFree(resolved_path); + return NULL; + } + } + + if (LIBXML(stream_context)) { + context = zend_fetch_resource(&LIBXML(stream_context) TSRMLS_CC, -1, "Stream-Context", NULL, 1, php_le_stream_context()); + } + + ret_val = php_stream_open_wrapper_ex(path_to_open, (char *)mode, ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL, context); + xmlFree(resolved_path); + return ret_val; +} + +void *php_libxml_streams_IO_open_read_wrapper(const char *filename) +{ + return php_libxml_streams_IO_open_wrapper(filename, "rb", 1); +} + +void *php_libxml_streams_IO_open_write_wrapper(const char *filename) +{ + return php_libxml_streams_IO_open_wrapper(filename, "wb", 0); +} + +int php_libxml_streams_IO_read(void *context, char *buffer, int len) +{ + TSRMLS_FETCH(); + return php_stream_read((php_stream*)context, buffer, len); +} + +int php_libxml_streams_IO_write(void *context, const char *buffer, int len) +{ + TSRMLS_FETCH(); + return php_stream_write((php_stream*)context, buffer, len); +} + +int php_libxml_streams_IO_close(void *context) +{ + TSRMLS_FETCH(); + return php_stream_close((php_stream*)context); +} + +static void php_libxml_ctx_error_level(int level, void *ctx, const char *msg TSRMLS_DC) +{ + xmlParserCtxtPtr parser; + + parser = (xmlParserCtxtPtr) ctx; + + if (parser != NULL && parser->input != NULL) { + if (parser->input->filename) { + php_error_docref(NULL TSRMLS_CC, level, "%s in %s, line: %d", msg, parser->input->filename, parser->input->line); + } else { + php_error_docref(NULL TSRMLS_CC, level, "%s in Entity, line: %d", msg, parser->input->line); + } + } +} + +static void php_libxml_internal_error_handler(int error_type, void *ctx, const char **msg, va_list ap) +{ + char *buf; + int len, len_iter, output = 0; + + TSRMLS_FETCH(); + + len = vspprintf(&buf, 0, *msg, ap); + len_iter = len; + + /* remove any trailing \n */ + while (len_iter && buf[--len_iter] == '\n') { + buf[len_iter] = '\0'; + output = 1; + } + + smart_str_appendl(&LIBXML(error_buffer), buf, len); + + efree(buf); + + if (output == 1) { + switch (error_type) { + case PHP_LIBXML_CTX_ERROR: + php_libxml_ctx_error_level(E_WARNING, ctx, LIBXML(error_buffer).c TSRMLS_CC); + break; + case PHP_LIBXML_CTX_WARNING: + php_libxml_ctx_error_level(E_NOTICE, ctx, LIBXML(error_buffer).c TSRMLS_CC); + break; + default: + php_error(E_WARNING, "%s", LIBXML(error_buffer).c); + } + smart_str_free(&LIBXML(error_buffer)); + } +} + +void php_libxml_ctx_error(void *ctx, const char *msg, ...) +{ + va_list args; + va_start(args, msg); + php_libxml_internal_error_handler(PHP_LIBXML_CTX_ERROR, ctx, &msg, args); + va_end(args); +} + +void php_libxml_ctx_warning(void *ctx, const char *msg, ...) +{ + va_list args; + va_start(args, msg); + php_libxml_internal_error_handler(PHP_LIBXML_CTX_WARNING, ctx, &msg, args); + va_end(args); +} + +PHP_LIBXML_API void php_libxml_error_handler(void *ctx, const char *msg, ...) +{ + va_list args; + va_start(args, msg); + php_libxml_internal_error_handler(PHP_LIBXML_ERROR, ctx, &msg, args); + va_end(args); +} + + +PHP_LIBXML_API void php_libxml_initialize() { + if (!_php_libxml_initialized) { + /* we should be the only one's to ever init!! */ + xmlInitParser(); + + /* Enable php stream/wrapper support for libxml + we only use php streams, so we do not enable + the default io handlers in libxml. + */ + xmlRegisterInputCallbacks( + php_libxml_streams_IO_match_wrapper, + php_libxml_streams_IO_open_read_wrapper, + php_libxml_streams_IO_read, + php_libxml_streams_IO_close); + + xmlRegisterOutputCallbacks( + php_libxml_streams_IO_match_wrapper, + php_libxml_streams_IO_open_write_wrapper, + php_libxml_streams_IO_write, + php_libxml_streams_IO_close); + + zend_hash_init(&php_libxml_exports, 0, NULL, NULL, 1); + + _php_libxml_initialized = 1; + } +} + +PHP_LIBXML_API void php_libxml_shutdown() { + if (_php_libxml_initialized) { +#if defined(LIBXML_SCHEMAS_ENABLED) + xmlRelaxNGCleanupTypes(); +#endif + xmlCleanupParser(); + zend_hash_destroy(&php_libxml_exports); + _php_libxml_initialized = 0; + } +} + +PHP_LIBXML_API zval *php_libxml_switch_context(zval *context TSRMLS_DC) { + zval *oldcontext; + + oldcontext = LIBXML(stream_context); + LIBXML(stream_context) = context; + return oldcontext; + +} + +PHP_MINIT_FUNCTION(libxml) +{ + php_libxml_initialize(); + +#ifdef ZTS + ts_allocate_id(&libxml_globals_id, sizeof(php_libxml_globals), (ts_allocate_ctor) php_libxml_init_globals, NULL); +#else + LIBXML(stream_context) = NULL; + LIBXML(error_buffer).c = NULL; +#endif + + return SUCCESS; +} + + +PHP_RINIT_FUNCTION(libxml) +{ + /* report errors via handler rather than stderr */ + xmlSetGenericErrorFunc(NULL, php_libxml_error_handler); + + return SUCCESS; +} + + +PHP_MSHUTDOWN_FUNCTION(libxml) +{ + php_libxml_shutdown(); + + return SUCCESS; +} + + +PHP_RSHUTDOWN_FUNCTION(libxml) +{ + /* reset libxml generic error handling */ + xmlSetGenericErrorFunc(NULL, NULL); + + smart_str_free(&LIBXML(error_buffer)); + return SUCCESS; +} + + +PHP_MINFO_FUNCTION(libxml) +{ + php_info_print_table_start(); + php_info_print_table_row(2, "libXML support", "active"); + php_info_print_table_row(2, "libXML Version", LIBXML_DOTTED_VERSION); + php_info_print_table_row(2, "libXML streams", "enabled"); + php_info_print_table_end(); +} +/* }}} */ + + +/* {{{ proto void libxml_set_streams_context(resource streams_context) + Set the streams context for the next libxml document load or write */ +PHP_FUNCTION(libxml_set_streams_context) +{ + zval *arg; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) { + return; + } + if (LIBXML(stream_context)) { + zval_ptr_dtor(&LIBXML(stream_context)); + LIBXML(stream_context) = NULL; + } + ZVAL_ADDREF(arg); + LIBXML(stream_context) = arg; +} +/* }}} */ + +/* {{{ Common functions shared by extensions */ +int php_libxml_xmlCheckUTF8(const unsigned char *s) +{ + int i; + unsigned char c; + + for (i = 0; (c = s[i++]);) { + if ((c & 0x80) == 0) { + } else if ((c & 0xe0) == 0xc0) { + if ((s[i++] & 0xc0) != 0x80) { + return 0; + } + } else if ((c & 0xf0) == 0xe0) { + if ((s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80) { + return 0; + } + } else if ((c & 0xf8) == 0xf0) { + if ((s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80) { + return 0; + } + } else { + return 0; + } + } + return 1; +} + +int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function) +{ + php_libxml_func_handler export_hnd; + + /* Initialize in case this module hasnt been loaded yet */ + php_libxml_initialize(); + export_hnd.export_func = export_function; + + return zend_hash_add(&php_libxml_exports, ce->name, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL); +} + +PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC) +{ + zend_class_entry *ce = NULL; + xmlNodePtr node = NULL; + php_libxml_func_handler *export_hnd; + + if (object->type == IS_OBJECT) { + ce = Z_OBJCE_P(object); + while (ce->parent != NULL) { + ce = ce->parent; + } + if (zend_hash_find(&php_libxml_exports, ce->name, ce->name_length + 1, (void **) &export_hnd) == SUCCESS) { + node = export_hnd->export_func(object TSRMLS_CC); + } + } + + return node; + +} + +int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC) +{ + int ret_refcount = -1; + + if (object != NULL && node != NULL) { + if (object->node != NULL) { + if (object->node->node == node) { + return object->node->refcount; + } else { + php_libxml_decrement_node_ptr(object TSRMLS_CC); + } + } + if (node->_private != NULL) { + object->node = node->_private; + ret_refcount = ++object->node->refcount; + /* Only dom uses _private */ + if (object->node->_private == NULL) { + object->node->_private = private_data; + } + } else { + ret_refcount = 1; + object->node = emalloc(sizeof(php_libxml_node_ptr)); + object->node->node = node; + object->node->refcount = 1; + object->node->_private = private_data; + node->_private = object->node; + } + } + + return ret_refcount; +} + +int php_libxml_decrement_node_ptr(php_libxml_node_object *object TSRMLS_DC) { + int ret_refcount = -1; + php_libxml_node_ptr *obj_node; + + if (object != NULL && object->node != NULL) { + obj_node = (php_libxml_node_ptr *) object->node; + ret_refcount = --obj_node->refcount; + if (ret_refcount == 0) { + if (obj_node->node != NULL) { + obj_node->node->_private = NULL; + } + efree(obj_node); + } + object->node = NULL; + } + + return ret_refcount; +} + +int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp TSRMLS_DC) { + int ret_refcount = -1; + + if (object->document != NULL) { + object->document->refcount++; + ret_refcount = object->document->refcount; + } else if (docp != NULL) { + ret_refcount = 1; + object->document = emalloc(sizeof(php_libxml_ref_obj)); + object->document->ptr = docp; + object->document->refcount = ret_refcount; + object->document->doc_props = NULL; + } + + return ret_refcount; +} + +int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC) { + int ret_refcount = -1; + + if (object != NULL && object->document != NULL) { + ret_refcount = --object->document->refcount; + if (ret_refcount == 0) { + if (object->document->ptr != NULL) { + xmlFreeDoc((xmlDoc *) object->document->ptr); + } + if (object->document->doc_props != NULL) { + efree(object->document->doc_props); + } + efree(object->document); + } + object->document = NULL; + } + + return ret_refcount; +} + +void php_libxml_node_free_resource(xmlNodePtr node TSRMLS_DC) +{ + if (!node) { + return; + } + + switch (node->type) { + case XML_DOCUMENT_NODE: + case XML_HTML_DOCUMENT_NODE: + break; + default: + if (node->parent == NULL || node->type == XML_NAMESPACE_DECL) { + php_libxml_node_free_list((xmlNodePtr) node->children TSRMLS_CC); + switch (node->type) { + /* Skip property freeing for the following types */ + case XML_ATTRIBUTE_DECL: + case XML_DTD_NODE: + case XML_DOCUMENT_TYPE_NODE: + case XML_ENTITY_DECL: + case XML_ATTRIBUTE_NODE: + case XML_NAMESPACE_DECL: + break; + default: + php_libxml_node_free_list((xmlNodePtr) node->properties TSRMLS_CC); + } + if (php_libxml_unregister_node(node TSRMLS_CC) == 0) { + node->doc = NULL; + } + php_libxml_node_free(node); + } else { + php_libxml_unregister_node(node TSRMLS_CC); + } + } +} + +void php_libxml_node_decrement_resource(php_libxml_node_object *object TSRMLS_DC) +{ + int ret_refcount = -1; + xmlNodePtr nodep; + php_libxml_node_ptr *obj_node; + + if (object != NULL && object->node != NULL) { + obj_node = (php_libxml_node_ptr *) object->node; + nodep = object->node->node; + ret_refcount = php_libxml_decrement_node_ptr(object TSRMLS_CC); + if (ret_refcount == 0) { + php_libxml_node_free_resource(nodep TSRMLS_CC); + } else { + if (obj_node && object == obj_node->_private) { + obj_node->_private = NULL; + } + } + /* Safe to call as if the resource were freed then doc pointer is NULL */ + php_libxml_decrement_doc_ref(object TSRMLS_CC); + } +} +/* }}} */ + +#endif + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: sw=4 ts=4 fdm=marker + * vim<600: sw=4 ts=4 + */ diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h new file mode 100644 index 000000000..1aa0b6e67 --- /dev/null +++ b/ext/libxml/php_libxml.h @@ -0,0 +1,107 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2004 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.0 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Shane Caraveo <shane@php.net> | + | Wez Furlong <wez@thebrainroom.com> | + +----------------------------------------------------------------------+ +*/ + +/* $Id: php_libxml.h,v 1.8.2.3 2004/11/09 08:13:04 dmitry Exp $ */ + +#ifndef PHP_LIBXML_H +#define PHP_LIBXML_H + +#ifdef HAVE_LIBXML +extern zend_module_entry libxml_module_entry; +#define libxml_module_ptr &libxml_module_entry +#else +#define libxml_module_ptr NULL +#endif + +#ifdef HAVE_LIBXML + +#ifdef PHP_WIN32 +#define PHP_LIBXML_API __declspec(dllexport) +#else +#define PHP_LIBXML_API +#endif + +#include "ext/standard/php_smart_str.h" +#include <libxml/tree.h> + +typedef struct { + zval *stream_context; + smart_str error_buffer; +} php_libxml_globals; + +typedef struct _php_libxml_ref_obj { + void *ptr; + int refcount; + void *doc_props; +} php_libxml_ref_obj; + +typedef struct _php_libxml_node_ptr { + xmlNodePtr node; + int refcount; + void *_private; +} php_libxml_node_ptr; + +typedef struct _php_libxml_node_object { + zend_object std; + php_libxml_node_ptr *node; + php_libxml_ref_obj *document; + HashTable *properties; +} php_libxml_node_object; + +typedef void * (*php_libxml_export_node) (zval *object TSRMLS_DC); + +PHP_FUNCTION(libxml_set_streams_context); + +int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC); +int php_libxml_decrement_node_ptr(php_libxml_node_object *object TSRMLS_DC); +int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp TSRMLS_DC); +int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC); +PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC); +PHP_LIBXML_API int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function); +/* When an explicit freeing of node and children is required */ +void php_libxml_node_free_resource(xmlNodePtr node TSRMLS_DC); +/* When object dtor is called as node may still be referenced */ +void php_libxml_node_decrement_resource(php_libxml_node_object *object TSRMLS_DC); +PHP_LIBXML_API void php_libxml_error_handler(void *ctx, const char *msg, ...); +void php_libxml_ctx_warning(void *ctx, const char *msg, ...); +void php_libxml_ctx_error(void *ctx, const char *msg, ...); +PHP_LIBXML_API int php_libxml_xmlCheckUTF8(const unsigned char *s); +PHP_LIBXML_API zval *php_libxml_switch_context(zval *context TSRMLS_DC); + +#endif /* HAVE_LIBXML */ + +#define phpext_libxml_ptr libxml_module_ptr + +#ifdef ZTS +#define LIBXML(v) TSRMG(libxml_globals_id, php_libxml_globals *, v) +#else +#define LIBXML(v) (libxml_globals.v) +#endif + +PHP_LIBXML_API void php_libxml_initialize(); +PHP_LIBXML_API void php_libxml_shutdown(); + +#endif /* PHP_LIBXML_H */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + */ diff --git a/ext/libxml/php_libxml2.def b/ext/libxml/php_libxml2.def new file mode 100644 index 000000000..0dd470afc --- /dev/null +++ b/ext/libxml/php_libxml2.def @@ -0,0 +1,1571 @@ +EXPORTS +__docbDefaultSAXHandler +__htmlDefaultSAXHandler +__oldXMLWDcompatibility +__xmlBufferAllocScheme +__xmlDefaultBufferSize +__xmlDefaultSAXHandler +__xmlDefaultSAXLocator +__xmlDeregisterNodeDefaultValue +__xmlDoValidityCheckingDefaultValue +xmlFree DATA +__xmlGenericError +__xmlGenericErrorContext +__xmlGetWarningsDefaultValue +__xmlIndentTreeOutput +xmlIsBaseCharGroup DATA +xmlIsCharGroup DATA +xmlIsCombiningGroup DATA +xmlIsDigitGroup DATA +xmlIsExtenderGroup DATA +xmlIsIdeographicGroup DATA +xmlIsPubidChar_tab DATA +__xmlKeepBlanksDefaultValue +xmlLastError DATA +__xmlLineNumbersDefaultValue +__xmlLoadExtDtdDefaultValue +xmlMalloc DATA +xmlMallocAtomic DATA +xmlMemStrdup DATA +__xmlParserDebugEntities +xmlParserMaxDepth DATA +__xmlParserVersion +__xmlPedanticParserDefaultValue +xmlRealloc DATA +__xmlRegisterNodeDefaultValue +__xmlSaveNoEmptyTags +xmlStringComment DATA +xmlStringText DATA +xmlStringTextNoenc DATA +xmlStructuredError DATA +__xmlSubstituteEntitiesDefaultValue +__xmlTreeIndentString +xmlXPathNAN DATA +xmlXPathNINF DATA +xmlXPathPINF DATA +UTF8ToHtml +UTF8Toisolat1 +attribute +attributeDecl +cdataBlock +characters +checkNamespace +comment +docbCreateFileParserCtxt +docbCreatePushParserCtxt +docbDefaultSAXHandlerInit +docbEncodeEntities +docbFreeParserCtxt +docbParseChunk +docbParseDoc +docbParseDocument +docbParseFile +docbSAXParseDoc +docbSAXParseFile +elementDecl +endDocument +endElement +entityDecl +externalSubset +getColumnNumber +getEntity +getLineNumber +getNamespace +getParameterEntity +getPublicId +getSystemId +globalNamespace +hasExternalSubset +hasInternalSubset +htmlAttrAllowed +htmlAutoCloseTag +htmlCreateFileParserCtxt +htmlCreateMemoryParserCtxt +htmlCreatePushParserCtxt +htmlCtxtReadDoc +htmlCtxtReadFd +htmlCtxtReadFile +htmlCtxtReadIO +htmlCtxtReadMemory +htmlCtxtReset +htmlCtxtUseOptions +htmlDefaultSAXHandlerInit +htmlDocContentDumpFormatOutput +htmlDocContentDumpOutput +htmlDocDump +htmlDocDumpMemory +htmlElementAllowedHere +htmlElementStatusHere +htmlEncodeEntities +htmlEntityLookup +htmlEntityValueLookup +htmlFreeParserCtxt +htmlGetMetaEncoding +htmlHandleOmittedElem +htmlInitAutoClose +htmlIsAutoClosed +htmlIsBooleanAttr +htmlIsScriptAttribute +htmlNewDoc +htmlNewDocNoDtD +htmlNodeDump +htmlNodeDumpFile +htmlNodeDumpFileFormat +htmlNodeDumpFormatOutput +htmlNodeDumpOutput +htmlNodeStatus +htmlParseCharRef +htmlParseChunk +htmlParseDoc +htmlParseDocument +htmlParseElement +htmlParseEntityRef +htmlParseFile +htmlReadDoc +htmlReadFd +htmlReadFile +htmlReadIO +htmlReadMemory +htmlSAXParseDoc +htmlSAXParseFile +htmlSaveFile +htmlSaveFileEnc +htmlSaveFileFormat +htmlSetMetaEncoding +htmlTagLookup +ignorableWhitespace +initGenericErrorDefaultFunc +initdocbDefaultSAXHandler +inithtmlDefaultSAXHandler +initxmlDefaultSAXHandler +inputPop +inputPush +internalSubset +isStandalone +isolat1ToUTF8 +namePop +namePush +namespaceDecl +nodePop +nodePush +notationDecl +processingInstruction +reference +resolveEntity +setDocumentLocator +setNamespace +startDocument +startElement +unparsedEntityDecl +valuePop +valuePush +xmlACatalogAdd +xmlACatalogDump +xmlACatalogRemove +xmlACatalogResolve +xmlACatalogResolvePublic +xmlACatalogResolveSystem +xmlACatalogResolveURI +xmlAddAttributeDecl +xmlAddChild +xmlAddChildList +xmlAddDocEntity +xmlAddDtdEntity +xmlAddElementDecl +xmlAddEncodingAlias +xmlAddID +xmlAddNextSibling +xmlAddNotationDecl +xmlAddPrevSibling +xmlAddRef +xmlAddSibling +xmlAllocOutputBuffer +xmlAllocParserInputBuffer +xmlAttrSerializeTxtContent +xmlAutomataCompile +xmlAutomataGetInitState +xmlAutomataIsDeterminist +xmlAutomataNewAllTrans +xmlAutomataNewCountTrans +xmlAutomataNewCountedTrans +xmlAutomataNewCounter +xmlAutomataNewCounterTrans +xmlAutomataNewEpsilon +xmlAutomataNewOnceTrans +xmlAutomataNewState +xmlAutomataNewTransition +xmlAutomataNewTransition2 +xmlAutomataSetFinalState +xmlBoolToText +xmlBufferAdd +xmlBufferAddHead +xmlBufferCCat +xmlBufferCat +xmlBufferContent +xmlBufferCreate +xmlBufferCreateSize +xmlBufferCreateStatic +xmlBufferDump +xmlBufferEmpty +xmlBufferFree +xmlBufferGrow +xmlBufferLength +xmlBufferResize +xmlBufferSetAllocationScheme +xmlBufferShrink +xmlBufferWriteCHAR +xmlBufferWriteChar +xmlBufferWriteQuotedString +xmlBuildQName +xmlBuildURI +xmlByteConsumed +xmlC14NDocDumpMemory +xmlC14NDocSave +xmlC14NDocSaveTo +xmlC14NExecute +xmlCanonicPath +xmlCatalogAdd +xmlCatalogAddLocal +xmlCatalogCleanup +xmlCatalogConvert +xmlCatalogDump +xmlCatalogFreeLocal +xmlCatalogGetDefaults +xmlCatalogGetPublic +xmlCatalogGetSystem +xmlCatalogIsEmpty +xmlCatalogLocalResolve +xmlCatalogLocalResolveURI +xmlCatalogRemove +xmlCatalogResolve +xmlCatalogResolvePublic +xmlCatalogResolveSystem +xmlCatalogResolveURI +xmlCatalogSetDebug +xmlCatalogSetDefaultPrefer +xmlCatalogSetDefaults +xmlCharEncCloseFunc +xmlCharEncFirstLine +xmlCharEncInFunc +xmlCharEncOutFunc +xmlCharInRange +xmlCharStrdup +xmlCharStrndup +xmlCheckFilename +xmlCheckHTTPInput +xmlCheckLanguageID +xmlCheckUTF8 +xmlCheckVersion +xmlCleanupCharEncodingHandlers +xmlCleanupEncodingAliases +xmlCleanupGlobals +xmlCleanupInputCallbacks +xmlCleanupMemory +xmlCleanupOutputCallbacks +xmlCleanupParser +xmlCleanupPredefinedEntities +xmlCleanupThreads +xmlClearNodeInfoSeq +xmlClearParserCtxt +xmlConvertSGMLCatalog +xmlCopyAttributeTable +xmlCopyChar +xmlCopyCharMultiByte +xmlCopyDoc +xmlCopyDtd +xmlCopyElementContent +xmlCopyElementTable +xmlCopyEntitiesTable +xmlCopyEnumeration +xmlCopyError +xmlCopyNamespace +xmlCopyNamespaceList +xmlCopyNode +xmlCopyNodeList +xmlCopyNotationTable +xmlCopyProp +xmlCopyPropList +xmlCreateDocParserCtxt +xmlCreateEntitiesTable +xmlCreateEntityParserCtxt +xmlCreateEnumeration +xmlCreateFileParserCtxt +xmlCreateIOParserCtxt +xmlCreateIntSubset +xmlCreateMemoryParserCtxt +xmlCreatePushParserCtxt +xmlCreateURI +xmlCreateURLParserCtxt +xmlCtxtGetLastError +xmlCtxtReadDoc +xmlCtxtReadFd +xmlCtxtReadFile +xmlCtxtReadIO +xmlCtxtReadMemory +xmlCtxtReset +xmlCtxtResetLastError +xmlCtxtResetPush +xmlCtxtUseOptions +xmlCurrentChar +xmlDictCreate +xmlDictCreateSub +xmlDictFree +xmlDictLookup +xmlDictOwns +xmlDictQLookup +xmlDictReference +xmlDictSize +xmlDebugDumpAttr +xmlDebugDumpAttrList +xmlDebugDumpDTD +xmlDebugDumpDocument +xmlDebugDumpDocumentHead +xmlDebugDumpEntities +xmlDebugDumpNode +xmlDebugDumpNodeList +xmlDebugDumpOneNode +xmlDebugDumpString +xmlDecodeEntities +xmlDefaultSAXHandlerInit +xmlDelEncodingAlias +xmlDeregisterNodeDefault +xmlDetectCharEncoding +xmlDictCreate +xmlDictCreateSub +xmlDictFree +xmlDictLookup +xmlDictOwns +xmlDictQLookup +xmlDictReference +xmlDictSize +xmlDocCopyNode +xmlDocDump +xmlDocDumpFormatMemory +xmlDocDumpFormatMemoryEnc +xmlDocDumpMemory +xmlDocDumpMemoryEnc +xmlDocFormatDump +xmlDocGetRootElement +xmlDocSetRootElement +xmlDumpAttributeDecl +xmlDumpAttributeTable +xmlDumpElementDecl +xmlDumpElementTable +xmlDumpEntitiesTable +xmlDumpEntityDecl +xmlDumpNotationDecl +xmlDumpNotationTable +xmlElemDump +xmlEncodeEntities +xmlEncodeEntitiesReentrant +xmlEncodeSpecialChars +xmlErrMemory +xmlFileClose +xmlFileMatch +xmlFileOpen +xmlFileRead +xmlFindCharEncodingHandler +xmlFreeAttributeTable +xmlFreeAutomata +xmlFreeCatalog +xmlFreeDoc +xmlFreeDtd +xmlFreeElementContent +xmlFreeElementTable +xmlFreeEntitiesTable +xmlFreeEnumeration +xmlFreeIDTable +xmlFreeInputStream +xmlFreeMutex +xmlFreeNode +xmlFreeNodeList +xmlFreeNotationTable +xmlFreeNs +xmlFreeNsList +xmlFreeParserCtxt +xmlFreeParserInputBuffer +xmlFreePattern +xmlFreePatternList +xmlFreeProp +xmlFreePropList +xmlFreeRMutex +xmlFreeRefTable +xmlFreeTextReader +xmlFreeTextWriter +xmlFreeURI +xmlFreeValidCtxt +xmlGcMemGet +xmlGcMemSetup +xmlGetBufferAllocationScheme +xmlGetCharEncodingHandler +xmlGetCharEncodingName +xmlGetCompressMode +xmlGetDocCompressMode +xmlGetDocEntity +xmlGetDtdAttrDesc +xmlGetDtdElementDesc +xmlGetDtdEntity +xmlGetDtdNotationDesc +xmlGetDtdQAttrDesc +xmlGetDtdQElementDesc +xmlGetEncodingAlias +xmlGetExternalEntityLoader +xmlGetFeature +xmlGetFeaturesList +xmlGetGlobalState +xmlGetID +xmlGetIntSubset +xmlGetLastChild +xmlGetLastError +xmlGetLineNo +xmlGetNoNsProp +xmlGetNodePath +xmlGetNsList +xmlGetNsProp +xmlGetParameterEntity +xmlGetPredefinedEntity +xmlGetProp +xmlGetRefs +xmlGetThreadId +xmlGetUTF8Char +xmlHandleEntity +xmlHasNsProp +xmlHasProp +xmlHashAddEntry +xmlHashAddEntry2 +xmlHashAddEntry3 +xmlHashCopy +xmlHashCreate +xmlHashFree +xmlHashLookup +xmlHashLookup2 +xmlHashLookup3 +xmlHashQLookup +xmlHashQLookup2 +xmlHashQLookup3 +xmlHashRemoveEntry +xmlHashRemoveEntry2 +xmlHashRemoveEntry3 +xmlHashScan +xmlHashScan3 +xmlHashScanFull +xmlHashScanFull3 +xmlHashSize +xmlHashUpdateEntry +xmlHashUpdateEntry2 +xmlHashUpdateEntry3 +xmlIOFTPClose +xmlIOFTPMatch +xmlIOFTPOpen +xmlIOFTPRead +xmlIOHTTPClose +xmlIOHTTPMatch +xmlIOHTTPOpen +xmlIOHTTPOpenW +xmlIOHTTPRead +xmlIOParseDTD +xmlInitCharEncodingHandlers +xmlInitGlobals +xmlInitMemory +xmlInitNodeInfoSeq +xmlInitParser +xmlInitParserCtxt +xmlInitThreads +xmlInitializeCatalog +xmlInitializeGlobalState +xmlInitializePredefinedEntities +xmlIsBaseChar +xmlIsBlank +xmlIsBlankNode +xmlIsChar +xmlIsCombining +xmlIsDigit +xmlIsExtender +xmlIsID +xmlIsIdeographic +xmlIsLetter +xmlIsMainThread +xmlIsMixedElement +xmlIsPubidChar +xmlIsRef +xmlIsXHTML +xmlIsBaseCharGroup DATA +xmlIsCharGroup DATA +xmlIsCombiningGroup DATA +xmlIsDigitGroup DATA +xmlIsExtenderGroup DATA +xmlIsIdeographicGroup DATA +xmlKeepBlanksDefault +xmlLineNumbersDefault +xmlLinkGetData +xmlListAppend +xmlListClear +xmlListCopy +xmlListCreate +xmlListDelete +xmlListDup +xmlListEmpty +xmlListEnd +xmlListFront +xmlListInsert +xmlListMerge +xmlListPopBack +xmlListPopFront +xmlListPushBack +xmlListPushFront +xmlListRemoveAll +xmlListRemoveFirst +xmlListRemoveLast +xmlListReverse +xmlListReverseSearch +xmlListReverseWalk +xmlListSearch +xmlListSize +xmlListSort +xmlListWalk +xmlLoadACatalog +xmlLoadCatalog +xmlLoadCatalogs +xmlLoadExternalEntity +xmlLoadSGMLSuperCatalog +xmlLockLibrary +xmlLsCountNode +xmlLsOneNode +xmlMallocAtomicLoc +xmlMallocLoc +xmlMemDisplay +xmlMemFree +xmlMemGet +xmlMemMalloc +xmlMemRealloc +xmlMemSetup +xmlMemShow +xmlMemStrdupLoc +xmlMemUsed +xmlMemoryDump +xmlMemoryStrdup +xmlMutexLock +xmlMutexUnlock +xmlNamespaceParseNCName +xmlNamespaceParseNSDef +xmlNamespaceParseQName +xmlNanoFTPCheckResponse +xmlNanoFTPCleanup +xmlNanoFTPClose +xmlNanoFTPCloseConnection +xmlNanoFTPConnect +xmlNanoFTPConnectTo +xmlNanoFTPCwd +xmlNanoFTPDele +xmlNanoFTPFreeCtxt +xmlNanoFTPGet +xmlNanoFTPGetConnection +xmlNanoFTPGetResponse +xmlNanoFTPGetSocket +xmlNanoFTPInit +xmlNanoFTPList +xmlNanoFTPNewCtxt +xmlNanoFTPOpen +xmlNanoFTPProxy +xmlNanoFTPQuit +xmlNanoFTPRead +xmlNanoFTPScanProxy +xmlNanoFTPUpdateURL +xmlNanoHTTPAuthHeader +xmlNanoHTTPCleanup +xmlNanoHTTPClose +xmlNanoHTTPEncoding +xmlNanoHTTPFetch +xmlNanoHTTPInit +xmlNanoHTTPMethod +xmlNanoHTTPMethodRedir +xmlNanoHTTPMimeType +xmlNanoHTTPOpen +xmlNanoHTTPOpenRedir +xmlNanoHTTPRead +xmlNanoHTTPRedir +xmlNanoHTTPReturnCode +xmlNanoHTTPSave +xmlNanoHTTPScanProxy +xmlNewAutomata +xmlNewCDataBlock +xmlNewCatalog +xmlNewCharEncodingHandler +xmlNewCharRef +xmlNewChild +xmlNewComment +xmlNewDoc +xmlNewDocComment +xmlNewDocFragment +xmlNewDocNode +xmlNewDocNodeEatName +xmlNewDocProp +xmlNewDocRawNode +xmlNewDocText +xmlNewDocTextLen +xmlNewDtd +xmlNewElementContent +xmlNewEntityInputStream +xmlNewGlobalNs +xmlNewIOInputStream +xmlNewInputFromFile +xmlNewInputStream +xmlNewMutex +xmlNewNode +xmlNewNodeEatName +xmlNewNs +xmlNewNsProp +xmlNewNsPropEatName +xmlNewPI +xmlNewParserCtxt +xmlNewProp +xmlNewRMutex +xmlNewReference +xmlNewStringInputStream +xmlNewText +xmlNewTextChild +xmlNewTextLen +xmlNewTextReader +xmlNewTextReaderFilename +xmlNewTextWriter +xmlNewTextWriterDoc +xmlNewTextWriterFilename +xmlNewTextWriterMemory +xmlNewTextWriterPushParser +xmlNewTextWriterTree +xmlNewValidCtxt +xmlNextChar +xmlNoNetExternalEntityLoader +xmlNodeAddContent +xmlNodeAddContentLen +xmlNodeBufGetContent +xmlNodeDump +xmlNodeDumpOutput +xmlNodeGetBase +xmlNodeGetContent +xmlNodeGetLang +xmlNodeGetSpacePreserve +xmlNodeIsText +xmlNodeListGetRawString +xmlNodeListGetString +xmlNodeSetBase +xmlNodeSetContent +xmlNodeSetContentLen +xmlNodeSetLang +xmlNodeSetName +xmlNodeSetSpacePreserve +xmlNormalizeURIPath +xmlNormalizeWindowsPath +xmlOutputBufferClose +xmlOutputBufferCreateFd +xmlOutputBufferCreateFile +xmlOutputBufferCreateFilename +xmlOutputBufferCreateIO +xmlOutputBufferFlush +xmlOutputBufferWrite +xmlOutputBufferWriteString +xmlParseAttValue +xmlParseAttribute +xmlParseAttributeListDecl +xmlParseAttributeType +xmlParseBalancedChunkMemory +xmlParseBalancedChunkMemoryRecover +xmlParseCDSect +xmlParseCatalogFile +xmlParseCharData +xmlParseCharEncoding +xmlParseCharRef +xmlParseChunk +xmlParseComment +xmlParseContent +xmlParseCtxtExternalEntity +xmlParseDTD +xmlParseDefaultDecl +xmlParseDoc +xmlParseDocTypeDecl +xmlParseDocument +xmlParseElement +xmlParseElementChildrenContentDecl +xmlParseElementContentDecl +xmlParseElementDecl +xmlParseElementMixedContentDecl +xmlParseEncName +xmlParseEncodingDecl +xmlParseEndTag +xmlParseEntity +xmlParseEntityDecl +xmlParseEntityRef +xmlParseEntityValue +xmlParseEnumeratedType +xmlParseEnumerationType +xmlParseExtParsedEnt +xmlParseExternalEntity +xmlParseExternalID +xmlParseExternalSubset +xmlParseFile +xmlParseMarkupDecl +xmlParseMemory +xmlParseMisc +xmlParseName +xmlParseNamespace +xmlParseNmtoken +xmlParseNotationDecl +xmlParseNotationType +xmlParsePEReference +xmlParsePI +xmlParsePITarget +xmlParsePubidLiteral +xmlParseQuotedString +xmlParseReference +xmlParseSDDecl +xmlParseStartTag +xmlParseSystemLiteral +xmlParseTextDecl +xmlParseURI +xmlParseURIReference +xmlParseVersionInfo +xmlParseVersionNum +xmlParseXMLDecl +xmlParserAddNodeInfo +xmlParserError +xmlParserFindNodeInfo +xmlParserFindNodeInfoIndex +xmlParserGetDirectory +xmlParserHandlePEReference +xmlParserHandleReference +xmlParserInputBufferCreateFd +xmlParserInputBufferCreateFile +xmlParserInputBufferCreateFilename +xmlParserInputBufferCreateIO +xmlParserInputBufferCreateMem +xmlParserInputBufferCreateStatic +xmlParserInputBufferGrow +xmlParserInputBufferPush +xmlParserInputBufferRead +xmlParserInputGrow +xmlParserInputRead +xmlParserInputShrink +xmlParserPrintFileContext +xmlParserPrintFileInfo +xmlParserValidityError +xmlParserValidityWarning +xmlParserWarning +xmlPatternMatch +xmlPatterncompile +xmlPedanticParserDefault +xmlPopInput +xmlPrintURI +xmlPushInput +xmlRMutexLock +xmlRMutexUnlock +xmlReadDoc +xmlReadFd +xmlReadFile +xmlReadIO +xmlReadMemory +xmlReaderForDoc +xmlReaderForFd +xmlReaderForFile +xmlReaderForIO +xmlReaderForMemory +xmlReaderNewDoc +xmlReaderNewFd +xmlReaderNewFile +xmlReaderNewIO +xmlReaderNewMemory +xmlReaderNewWalker +xmlReaderWalker +xmlReallocLoc +xmlReconciliateNs +xmlRecoverDoc +xmlRecoverFile +xmlRecoverMemory +xmlRegExecPushString +xmlRegExecPushString2 +xmlRegFreeExecCtxt +xmlRegFreeRegexp +xmlRegNewExecCtxt +xmlRegexpCompile +xmlRegexpExec +xmlRegexpIsDeterminist +xmlRegexpPrint +xmlRegisterCharEncodingHandler +xmlRegisterDefaultInputCallbacks +xmlRegisterDefaultOutputCallbacks +xmlRegisterHTTPPostCallbacks +xmlRegisterInputCallbacks +xmlRegisterNodeDefault +xmlRegisterOutputCallbacks +xmlRelaxNGCleanupTypes +xmlRelaxNGDump +xmlRelaxNGDumpTree +xmlRelaxNGFree +xmlRelaxNGFreeParserCtxt +xmlRelaxNGFreeValidCtxt +xmlRelaxNGGetParserErrors +xmlRelaxNGGetValidErrors +xmlRelaxNGNewDocParserCtxt +xmlRelaxNGNewMemParserCtxt +xmlRelaxNGNewParserCtxt +xmlRelaxNGNewValidCtxt +xmlRelaxNGParse +xmlRelaxNGSetParserErrors +xmlRelaxNGSetValidErrors +xmlRelaxNGValidateDoc +xmlRelaxNGValidateFullElement +xmlRelaxNGValidatePopElement +xmlRelaxNGValidatePushCData +xmlRelaxNGValidatePushElement +xmlRelaxParserSetFlag +xmlRemoveID +xmlRemoveProp +xmlRemoveRef +xmlReplaceNode +xmlResetError +xmlResetLastError +xmlSAX2AttributeDecl +xmlSAX2CDataBlock +xmlSAX2Characters +xmlSAX2Comment +xmlSAX2ElementDecl +xmlSAX2EndDocument +xmlSAX2EndElement +xmlSAX2EndElementNs +xmlSAX2EntityDecl +xmlSAX2ExternalSubset +xmlSAX2GetColumnNumber +xmlSAX2GetEntity +xmlSAX2GetLineNumber +xmlSAX2GetParameterEntity +xmlSAX2GetPublicId +xmlSAX2GetSystemId +xmlSAX2HasExternalSubset +xmlSAX2HasInternalSubset +xmlSAX2IgnorableWhitespace +xmlSAX2InitDefaultSAXHandler +xmlSAX2InitDocbDefaultSAXHandler +xmlSAX2InitHtmlDefaultSAXHandler +xmlSAX2InternalSubset +xmlSAX2IsStandalone +xmlSAX2NotationDecl +xmlSAX2ProcessingInstruction +xmlSAX2Reference +xmlSAX2ResolveEntity +xmlSAX2SetDocumentLocator +xmlSAX2StartDocument +xmlSAX2StartElement +xmlSAX2StartElementNs +xmlSAX2UnparsedEntityDecl +xmlSAXDefaultVersion +xmlSAXParseDTD +xmlSAXParseDoc +xmlSAXParseEntity +xmlSAXParseFile +xmlSAXParseFileWithData +xmlSAXParseMemory +xmlSAXParseMemoryWithData +xmlSAXUserParseFile +xmlSAXUserParseMemory +xmlSAXVersion +xmlSaveFile +xmlSaveFileEnc +xmlSaveFileTo +xmlSaveFormatFile +xmlSaveFormatFileEnc +xmlSaveFormatFileTo +xmlSaveUri +xmlScanName +xmlSchemaCheckFacet +xmlSchemaCleanupTypes +xmlSchemaCompareValues +xmlSchemaDump +xmlSchemaFree +xmlSchemaFreeFacet +xmlSchemaFreeParserCtxt +xmlSchemaFreeType +xmlSchemaFreeValidCtxt +xmlSchemaFreeValue +xmlSchemaGetPredefinedType +xmlSchemaInitTypes +xmlSchemaNewDocParserCtxt +xmlSchemaNewFacet +xmlSchemaNewMemParserCtxt +xmlSchemaNewParserCtxt +xmlSchemaNewValidCtxt +xmlSchemaParse +xmlSchemaSetParserErrors +xmlSchemaSetValidErrors +xmlSchemaValPredefTypeNode +xmlSchemaValidateDoc +xmlSchemaValidateFacet +xmlSchemaValidatePredefinedType +xmlSchemaValidateStream +xmlSearchNs +xmlSearchNsByHref +xmlSetBufferAllocationScheme +xmlSetCompressMode +xmlSetDocCompressMode +xmlSetEntityReferenceFunc +xmlSetExternalEntityLoader +xmlSetFeature +xmlSetGenericErrorFunc +xmlSetListDoc +xmlSetNs +xmlSetNsProp +xmlSetProp +xmlSetStructuredErrorFunc +xmlSetTreeDoc +xmlSetupParserForBuffer +xmlShell +xmlShellBase +xmlShellCat +xmlShellDir +xmlShellDu +xmlShellList +xmlShellLoad +xmlShellPrintNode +xmlShellPrintXPathError +xmlShellPrintXPathResult +xmlShellPwd +xmlShellSave +xmlShellValidate +xmlShellWrite +xmlSkipBlankChars +xmlSnprintfElementContent +xmlSplitQName +xmlSplitQName2 +xmlSplitQName3 +xmlSprintfElementContent +xmlStopParser +xmlStrEqual +xmlStrPrintf +xmlStrQEqual +xmlStrVPrintf +xmlStrcasecmp +xmlStrcasestr +xmlStrcat +xmlStrchr +xmlStrcmp +xmlStrdup +xmlStringCurrentChar +xmlStringDecodeEntities +xmlStringGetNodeList +xmlStringLenDecodeEntities +xmlStringLenGetNodeList +xmlStrlen +xmlStrncasecmp +xmlStrncat +xmlStrncatNew +xmlStrncmp +xmlStrndup +xmlStrstr +xmlStrsub +xmlSubstituteEntitiesDefault +xmlSwitchEncoding +xmlSwitchInputEncoding +xmlSwitchToEncoding +xmlTextConcat +xmlTextMerge +xmlTextReaderAttributeCount +xmlTextReaderBaseUri +xmlTextReaderClose +xmlTextReaderConstBaseUri +xmlTextReaderConstLocalName +xmlTextReaderConstName +xmlTextReaderConstNamespaceUri +xmlTextReaderConstPrefix +xmlTextReaderConstString +xmlTextReaderConstValue +xmlTextReaderConstXmlLang +xmlTextReaderCurrentDoc +xmlTextReaderCurrentNode +xmlTextReaderDepth +xmlTextReaderExpand +xmlTextReaderGetAttribute +xmlTextReaderGetAttributeNo +xmlTextReaderGetAttributeNs +xmlTextReaderGetErrorHandler +xmlTextReaderGetParserProp +xmlTextReaderGetRemainder +xmlTextReaderHasAttributes +xmlTextReaderHasValue +xmlTextReaderIsDefault +xmlTextReaderIsEmptyElement +xmlTextReaderIsValid +xmlTextReaderLocalName +xmlTextReaderLocatorBaseURI +xmlTextReaderLocatorLineNumber +xmlTextReaderLookupNamespace +xmlTextReaderMoveToAttribute +xmlTextReaderMoveToAttributeNo +xmlTextReaderMoveToAttributeNs +xmlTextReaderMoveToElement +xmlTextReaderMoveToFirstAttribute +xmlTextReaderMoveToNextAttribute +xmlTextReaderName +xmlTextReaderNamespaceUri +xmlTextReaderNext +xmlTextReaderNextSibling +xmlTextReaderNodeType +xmlTextReaderNormalization +xmlTextReaderPrefix +xmlTextReaderPreserve +xmlTextReaderPreservePattern +xmlTextReaderQuoteChar +xmlTextReaderRead +xmlTextReaderReadAttributeValue +xmlTextReaderReadInnerXml +xmlTextReaderReadOuterXml +xmlTextReaderReadState +xmlTextReaderReadString +xmlTextReaderRelaxNGSetSchema +xmlTextReaderRelaxNGValidate +xmlTextReaderSetErrorHandler +xmlTextReaderSetParserProp +xmlTextReaderSetStructuredErrorHandler +xmlTextReaderValue +xmlTextReaderXmlLang +xmlTextWriterEndAttribute +xmlTextWriterEndCDATA +xmlTextWriterEndComment +xmlTextWriterEndDTD +xmlTextWriterEndDocument +xmlTextWriterEndElement +xmlTextWriterEndPI +xmlTextWriterFlush +xmlTextWriterFullEndElement +xmlTextWriterSetIndent +xmlTextWriterSetIndentString +xmlTextWriterStartAttribute +xmlTextWriterStartAttributeNS +xmlTextWriterStartCDATA +xmlTextWriterStartComment +xmlTextWriterStartDTD +xmlTextWriterStartDTDAttlist +xmlTextWriterStartDTDElement +xmlTextWriterStartDTDEntity +xmlTextWriterStartDocument +xmlTextWriterStartElement +xmlTextWriterStartElementNS +xmlTextWriterStartPI +xmlTextWriterWriteAttribute +xmlTextWriterWriteAttributeNS +xmlTextWriterWriteBase64 +xmlTextWriterWriteBinHex +xmlTextWriterWriteCDATA +xmlTextWriterWriteComment +xmlTextWriterWriteDTD +xmlTextWriterWriteDTDAttlist +xmlTextWriterWriteDTDElement +xmlTextWriterWriteDTDEntity +xmlTextWriterWriteDTDExternalEntity +xmlTextWriterWriteDTDInternalEntity +xmlTextWriterWriteDTDNotation +xmlTextWriterWriteElement +xmlTextWriterWriteElementNS +xmlTextWriterWriteFormatAttribute +xmlTextWriterWriteFormatAttributeNS +xmlTextWriterWriteFormatCDATA +xmlTextWriterWriteFormatComment +xmlTextWriterWriteFormatDTD +xmlTextWriterWriteFormatDTDAttlist +xmlTextWriterWriteFormatDTDElement +xmlTextWriterWriteFormatDTDInternalEntity +xmlTextWriterWriteFormatElement +xmlTextWriterWriteFormatElementNS +xmlTextWriterWriteFormatPI +xmlTextWriterWriteFormatRaw +xmlTextWriterWriteFormatString +xmlTextWriterWritePI +xmlTextWriterWriteRaw +xmlTextWriterWriteRawLen +xmlTextWriterWriteString +xmlTextWriterWriteVFormatAttribute +xmlTextWriterWriteVFormatAttributeNS +xmlTextWriterWriteVFormatCDATA +xmlTextWriterWriteVFormatComment +xmlTextWriterWriteVFormatDTD +xmlTextWriterWriteVFormatDTDAttlist +xmlTextWriterWriteVFormatDTDElement +xmlTextWriterWriteVFormatDTDInternalEntity +xmlTextWriterWriteVFormatElement +xmlTextWriterWriteVFormatElementNS +xmlTextWriterWriteVFormatPI +xmlTextWriterWriteVFormatRaw +xmlTextWriterWriteVFormatString +xmlThrDefBufferAllocScheme +xmlThrDefDefaultBufferSize +xmlThrDefDeregisterNodeDefault +xmlThrDefDoValidityCheckingDefaultValue +xmlThrDefGetWarningsDefaultValue +xmlThrDefIndentTreeOutput +xmlThrDefKeepBlanksDefaultValue +xmlThrDefLineNumbersDefaultValue +xmlThrDefLoadExtDtdDefaultValue +xmlThrDefParserDebugEntities +xmlThrDefPedanticParserDefaultValue +xmlThrDefRegisterNodeDefault +xmlThrDefSaveNoEmptyTags +xmlThrDefSetGenericErrorFunc +xmlThrDefSetStructuredErrorFunc +xmlThrDefSubstituteEntitiesDefaultValue +xmlThrDefTreeIndentString +xmlUCSIsAegeanNumbers +xmlUCSIsAlphabeticPresentationForms +xmlUCSIsArabic +xmlUCSIsArabicPresentationFormsA +xmlUCSIsArabicPresentationFormsB +xmlUCSIsArmenian +xmlUCSIsArrows +xmlUCSIsBasicLatin +xmlUCSIsBengali +xmlUCSIsBlock +xmlUCSIsBlockElements +xmlUCSIsBopomofo +xmlUCSIsBopomofoExtended +xmlUCSIsBoxDrawing +xmlUCSIsBraillePatterns +xmlUCSIsBuhid +xmlUCSIsByzantineMusicalSymbols +xmlUCSIsCJKCompatibility +xmlUCSIsCJKCompatibilityForms +xmlUCSIsCJKCompatibilityIdeographs +xmlUCSIsCJKCompatibilityIdeographsSupplement +xmlUCSIsCJKRadicalsSupplement +xmlUCSIsCJKSymbolsandPunctuation +xmlUCSIsCJKUnifiedIdeographs +xmlUCSIsCJKUnifiedIdeographsExtensionA +xmlUCSIsCJKUnifiedIdeographsExtensionB +xmlUCSIsCat +xmlUCSIsCatC +xmlUCSIsCatCc +xmlUCSIsCatCf +xmlUCSIsCatCo +xmlUCSIsCatCs +xmlUCSIsCatL +xmlUCSIsCatLl +xmlUCSIsCatLm +xmlUCSIsCatLo +xmlUCSIsCatLt +xmlUCSIsCatLu +xmlUCSIsCatM +xmlUCSIsCatMc +xmlUCSIsCatMe +xmlUCSIsCatMn +xmlUCSIsCatN +xmlUCSIsCatNd +xmlUCSIsCatNl +xmlUCSIsCatNo +xmlUCSIsCatP +xmlUCSIsCatPc +xmlUCSIsCatPd +xmlUCSIsCatPe +xmlUCSIsCatPf +xmlUCSIsCatPi +xmlUCSIsCatPo +xmlUCSIsCatPs +xmlUCSIsCatS +xmlUCSIsCatSc +xmlUCSIsCatSk +xmlUCSIsCatSm +xmlUCSIsCatSo +xmlUCSIsCatZ +xmlUCSIsCatZl +xmlUCSIsCatZp +xmlUCSIsCatZs +xmlUCSIsCherokee +xmlUCSIsCombiningDiacriticalMarks +xmlUCSIsCombiningDiacriticalMarksforSymbols +xmlUCSIsCombiningHalfMarks +xmlUCSIsCombiningMarksforSymbols +xmlUCSIsControlPictures +xmlUCSIsCurrencySymbols +xmlUCSIsCypriotSyllabary +xmlUCSIsCyrillic +xmlUCSIsCyrillicSupplement +xmlUCSIsDeseret +xmlUCSIsDevanagari +xmlUCSIsDingbats +xmlUCSIsEnclosedAlphanumerics +xmlUCSIsEnclosedCJKLettersandMonths +xmlUCSIsEthiopic +xmlUCSIsGeneralPunctuation +xmlUCSIsGeometricShapes +xmlUCSIsGeorgian +xmlUCSIsGothic +xmlUCSIsGreek +xmlUCSIsGreekExtended +xmlUCSIsGreekandCoptic +xmlUCSIsGujarati +xmlUCSIsGurmukhi +xmlUCSIsHalfwidthandFullwidthForms +xmlUCSIsHangulCompatibilityJamo +xmlUCSIsHangulJamo +xmlUCSIsHangulSyllables +xmlUCSIsHanunoo +xmlUCSIsHebrew +xmlUCSIsHighPrivateUseSurrogates +xmlUCSIsHighSurrogates +xmlUCSIsHiragana +xmlUCSIsIPAExtensions +xmlUCSIsIdeographicDescriptionCharacters +xmlUCSIsKanbun +xmlUCSIsKangxiRadicals +xmlUCSIsKannada +xmlUCSIsKatakana +xmlUCSIsKatakanaPhoneticExtensions +xmlUCSIsKhmer +xmlUCSIsKhmerSymbols +xmlUCSIsLao +xmlUCSIsLatin1Supplement +xmlUCSIsLatinExtendedA +xmlUCSIsLatinExtendedAdditional +xmlUCSIsLatinExtendedB +xmlUCSIsLetterlikeSymbols +xmlUCSIsLimbu +xmlUCSIsLinearBIdeograms +xmlUCSIsLinearBSyllabary +xmlUCSIsLowSurrogates +xmlUCSIsMalayalam +xmlUCSIsMathematicalAlphanumericSymbols +xmlUCSIsMathematicalOperators +xmlUCSIsMiscellaneousMathematicalSymbolsA +xmlUCSIsMiscellaneousMathematicalSymbolsB +xmlUCSIsMiscellaneousSymbols +xmlUCSIsMiscellaneousSymbolsandArrows +xmlUCSIsMiscellaneousTechnical +xmlUCSIsMongolian +xmlUCSIsMusicalSymbols +xmlUCSIsMyanmar +xmlUCSIsNumberForms +xmlUCSIsOgham +xmlUCSIsOldItalic +xmlUCSIsOpticalCharacterRecognition +xmlUCSIsOriya +xmlUCSIsOsmanya +xmlUCSIsPhoneticExtensions +xmlUCSIsPrivateUse +xmlUCSIsPrivateUseArea +xmlUCSIsRunic +xmlUCSIsShavian +xmlUCSIsSinhala +xmlUCSIsSmallFormVariants +xmlUCSIsSpacingModifierLetters +xmlUCSIsSpecials +xmlUCSIsSuperscriptsandSubscripts +xmlUCSIsSupplementalArrowsA +xmlUCSIsSupplementalArrowsB +xmlUCSIsSupplementalMathematicalOperators +xmlUCSIsSupplementaryPrivateUseAreaA +xmlUCSIsSupplementaryPrivateUseAreaB +xmlUCSIsSyriac +xmlUCSIsTagalog +xmlUCSIsTagbanwa +xmlUCSIsTags +xmlUCSIsTaiLe +xmlUCSIsTaiXuanJingSymbols +xmlUCSIsTamil +xmlUCSIsTelugu +xmlUCSIsThaana +xmlUCSIsThai +xmlUCSIsTibetan +xmlUCSIsUgaritic +xmlUCSIsUnifiedCanadianAboriginalSyllabics +xmlUCSIsVariationSelectors +xmlUCSIsVariationSelectorsSupplement +xmlUCSIsYiRadicals +xmlUCSIsYiSyllables +xmlUCSIsYijingHexagramSymbols +xmlURIEscape +xmlURIEscapeStr +xmlURIUnescapeString +xmlUTF8Charcmp +xmlUTF8Size +xmlUTF8Strlen +xmlUTF8Strloc +xmlUTF8Strndup +xmlUTF8Strpos +xmlUTF8Strsize +xmlUTF8Strsub +xmlUnlinkNode +xmlUnlockLibrary +xmlUnsetNsProp +xmlUnsetProp +xmlValidBuildContentModel +xmlValidCtxtNormalizeAttributeValue +xmlValidGetPotentialChildren +xmlValidGetValidElements +xmlValidNormalizeAttributeValue +xmlValidateAttributeDecl +xmlValidateAttributeValue +xmlValidateDocument +xmlValidateDocumentFinal +xmlValidateDtd +xmlValidateDtdFinal +xmlValidateElement +xmlValidateElementDecl +xmlValidateNCName +xmlValidateNMToken +xmlValidateName +xmlValidateNameValue +xmlValidateNamesValue +xmlValidateNmtokenValue +xmlValidateNmtokensValue +xmlValidateNotationDecl +xmlValidateNotationUse +xmlValidateOneAttribute +xmlValidateOneElement +xmlValidateOneNamespace +xmlValidatePopElement +xmlValidatePushCData +xmlValidatePushElement +xmlValidateQName +xmlValidateRoot +xmlXIncludeFreeContext +xmlXIncludeNewContext +xmlXIncludeProcess +xmlXIncludeProcessFlags +xmlXIncludeProcessNode +xmlXIncludeProcessTree +xmlXIncludeProcessTreeFlags +xmlXIncludeSetFlags +xmlXPathAddValues +xmlXPathBooleanFunction +xmlXPathCastBooleanToNumber +xmlXPathCastBooleanToString +xmlXPathCastNodeSetToBoolean +xmlXPathCastNodeSetToNumber +xmlXPathCastNodeSetToString +xmlXPathCastNodeToNumber +xmlXPathCastNodeToString +xmlXPathCastNumberToBoolean +xmlXPathCastNumberToString +xmlXPathCastStringToBoolean +xmlXPathCastStringToNumber +xmlXPathCastToBoolean +xmlXPathCastToNumber +xmlXPathCastToString +xmlXPathCeilingFunction +xmlXPathCmpNodes +xmlXPathCtxtCompile +xmlXPathCompareValues +xmlXPathCompile +xmlXPathCompiledEval +xmlXPathConcatFunction +xmlXPathContainsFunction +xmlXPathConvertBoolean +xmlXPathConvertNumber +xmlXPathConvertString +xmlXPathCountFunction +xmlXPathCtxtCompile +xmlXPathDebugDumpCompExpr +xmlXPathDebugDumpObject +xmlXPathDifference +xmlXPathDistinct +xmlXPathDistinctSorted +xmlXPathDivValues +xmlXPathEqualValues +xmlXPathErr +xmlXPathEval +xmlXPathEvalExpr +xmlXPathEvalExpression +xmlXPathEvalPredicate +xmlXPathEvaluatePredicateResult +xmlXPathFalseFunction +xmlXPathFloorFunction +xmlXPathFreeCompExpr +xmlXPathFreeContext +xmlXPathFreeNodeSet +xmlXPathFreeNodeSetList +xmlXPathFreeObject +xmlXPathFreeParserContext +xmlXPathFunctionLookup +xmlXPathFunctionLookupNS +xmlXPathHasSameNodes +xmlXPathIdFunction +xmlXPathInit +xmlXPathIntersection +xmlXPathIsInf +xmlXPathIsNaN +xmlXPathIsNodeType +xmlXPathLangFunction +xmlXPathLastFunction +xmlXPathLeading +xmlXPathLeadingSorted +xmlXPathLocalNameFunction +xmlXPathModValues +xmlXPathMultValues +xmlXPathNamespaceURIFunction +xmlXPathNewBoolean +xmlXPathNewCString +xmlXPathNewContext +xmlXPathNewFloat +xmlXPathNewNodeSet +xmlXPathNewNodeSetList +xmlXPathNewParserContext +xmlXPathNewString +xmlXPathNewValueTree +xmlXPathNextAncestor +xmlXPathNextAncestorOrSelf +xmlXPathNextAttribute +xmlXPathNextChild +xmlXPathNextDescendant +xmlXPathNextDescendantOrSelf +xmlXPathNextFollowing +xmlXPathNextFollowingSibling +xmlXPathNextNamespace +xmlXPathNextParent +xmlXPathNextPreceding +xmlXPathNextPrecedingSibling +xmlXPathNextSelf +xmlXPathNodeLeading +xmlXPathNodeLeadingSorted +xmlXPathNodeSetAdd +xmlXPathNodeSetAddNs +xmlXPathNodeSetAddUnique +xmlXPathNodeSetContains +xmlXPathNodeSetCreate +xmlXPathNodeSetDel +xmlXPathNodeSetFreeNs +xmlXPathNodeSetMerge +xmlXPathNodeSetRemove +xmlXPathNodeSetSort +xmlXPathNodeTrailing +xmlXPathNodeTrailingSorted +xmlXPathNormalizeFunction +xmlXPathNotEqualValues +xmlXPathNotFunction +xmlXPathNsLookup +xmlXPathNumberFunction +xmlXPathObjectCopy +xmlXPathOrderDocElems +xmlXPathParseNCName +xmlXPathParseName +xmlXPathPopBoolean +xmlXPathPopExternal +xmlXPathPopNodeSet +xmlXPathPopNumber +xmlXPathPopString +xmlXPathPositionFunction +xmlXPathRegisterAllFunctions +xmlXPathRegisterFunc +xmlXPathRegisterFuncLookup +xmlXPathRegisterFuncNS +xmlXPathRegisterNs +xmlXPathRegisterVariable +xmlXPathRegisterVariableLookup +xmlXPathRegisterVariableNS +xmlXPathRegisteredFuncsCleanup +xmlXPathRegisteredNsCleanup +xmlXPathRegisteredVariablesCleanup +xmlXPathRoot +xmlXPathRoundFunction +xmlXPathStartsWithFunction +xmlXPathStringEvalNumber +xmlXPathStringFunction +xmlXPathStringLengthFunction +xmlXPathSubValues +xmlXPathSubstringAfterFunction +xmlXPathSubstringBeforeFunction +xmlXPathSubstringFunction +xmlXPathSumFunction +xmlXPathTrailing +xmlXPathTrailingSorted +xmlXPathTranslateFunction +xmlXPathTrueFunction +xmlXPathValueFlipSign +xmlXPathVariableLookup +xmlXPathVariableLookupNS +xmlXPathWrapCString +xmlXPathWrapExternal +xmlXPathWrapNodeSet +xmlXPathWrapString +xmlXPathErr +xmlXPatherror +xmlXPtrBuildNodeList +xmlXPtrEval +xmlXPtrEvalRangePredicate +xmlXPtrFreeLocationSet +xmlXPtrLocationSetAdd +xmlXPtrLocationSetCreate +xmlXPtrLocationSetDel +xmlXPtrLocationSetMerge +xmlXPtrLocationSetRemove +xmlXPtrNewCollapsedRange +xmlXPtrNewContext +xmlXPtrNewLocationSetNodeSet +xmlXPtrNewLocationSetNodes +xmlXPtrNewRange +xmlXPtrNewRangeNodeObject +xmlXPtrNewRangeNodePoint +xmlXPtrNewRangeNodes +xmlXPtrNewRangePointNode +xmlXPtrNewRangePoints +xmlXPtrRangeToFunction +xmlXPtrWrapLocationSet +xmlNewTextWriter +xmlNewTextWriterDoc +xmlNewTextWriterFilename +xmlNewTextWriterMemory +xmlNewTextWriterPushParser +xmlNewTextWriterTree +xmlFreeTextWriter +xmlTextWriterEndAttribute +xmlTextWriterEndCDATA +xmlTextWriterEndComment +xmlTextWriterEndDTD +xmlTextWriterEndDTDAttlist +xmlTextWriterEndDTDElement +xmlTextWriterEndDTDEntity +xmlTextWriterEndDocument +xmlTextWriterEndElement +xmlTextWriterEndPI +xmlTextWriterFlush +xmlTextWriterFullEndElement +xmlTextWriterSetIndent +xmlTextWriterSetIndentString +xmlTextWriterStartAttribute +xmlTextWriterStartAttributeNS +xmlTextWriterStartCDATA +xmlTextWriterStartComment +xmlTextWriterStartDTD +xmlTextWriterStartDTDAttlist +xmlTextWriterStartDTDElement +xmlTextWriterStartDTDEntity +xmlTextWriterStartDocument +xmlTextWriterStartElement +xmlTextWriterStartElementNS +xmlTextWriterStartPI +xmlTextWriterWriteAttribute +xmlTextWriterWriteAttributeNS +xmlTextWriterWriteBase64 +xmlTextWriterWriteBinHex +xmlTextWriterWriteCDATA +xmlTextWriterWriteComment +xmlTextWriterWriteDTD +xmlTextWriterWriteDTDAttlist +xmlTextWriterWriteDTDElement +xmlTextWriterWriteDTDEntity +xmlTextWriterWriteDTDExternalEntity +xmlTextWriterWriteDTDExternalEntityContents +xmlTextWriterWriteDTDInternalEntity +xmlTextWriterWriteDTDNotation +xmlTextWriterWriteElement +xmlTextWriterWriteElementNS +xmlTextWriterWriteFormatAttribute +xmlTextWriterWriteFormatAttributeNS +xmlTextWriterWriteFormatCDATA +xmlTextWriterWriteFormatComment +xmlTextWriterWriteFormatDTD +xmlTextWriterWriteFormatDTDAttlist +xmlTextWriterWriteFormatDTDElement +xmlTextWriterWriteFormatDTDInternalEntity +xmlTextWriterWriteFormatElement +xmlTextWriterWriteFormatElementNS +xmlTextWriterWriteFormatPI +xmlTextWriterWriteFormatRaw +xmlTextWriterWriteFormatString +xmlTextWriterWritePI +xmlTextWriterWriteRaw +xmlTextWriterWriteRawLen +xmlTextWriterWriteString |
