/* win32/libxml2.def.src
   Pseudo-source used to create a .DEF file for proper dynamic linkage. 
   
   Assuming you use Microsoft's C compiler, you run a
   
       cl /EP libxml2.def.src > libxml2.def
       
   in order to get the right .DEF file. Basically, all you do is
   preprocess this file using a C/C++ preprocessor and the right
   .DEF file should come out. 
   
   Should you need a function which does not seem to be exported
   from the libxml2.dll, its name is most certainly missing here.
   Add the name of the offending function to this file and rebuild.

   21.03.2001, Igor Zlatkovic (igor@stud.fh-frankfurt.de)
*/

#define LIBXML2_COMPILING_MSCCDEF
#include "../include/libxml/xmlversion.h"

LIBRARY libxml2
EXPORTS


/* c14n.h
   --------------------------------------------------------------------- */
#ifdef LIBXML_C14N_ENABLED
	xmlC14NDocSaveTo
	xmlC14NDocDumpMemory
	xmlC14NDocSave
	xmlC14NExecute
#endif /* LIBXML_C14N_ENABLED */


/* catalog.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_CATALOG_ENABLED
	/* Operations on a given catalog */
	xmlNewCatalog
	xmlLoadACatalog
	xmlLoadSGMLSuperCatalog
	xmlConvertSGMLCatalog
	xmlACatalogAdd
	xmlACatalogRemove
	xmlACatalogResolve
	xmlACatalogResolveSystem
	xmlACatalogResolvePublic
	xmlACatalogResolveURI
	xmlACatalogDump
	xmlFreeCatalog
	xmlCatalogIsEmpty
	
	/* Global operations */
	xmlInitializeCatalog
	xmlLoadCatalog
	xmlLoadCatalogs
	xmlCatalogCleanup
	xmlCatalogDump
	xmlCatalogResolve
	xmlCatalogResolveSystem
	xmlCatalogResolvePublic
	xmlCatalogResolveURI
	xmlCatalogAdd
	xmlCatalogRemove
	xmlParseCatalogFile
	xmlCatalogConvert

	/* Strictly minimal interfaces for per-document catalogs used by the parser. */
	xmlCatalogFreeLocal
	xmlCatalogAddLocal
	xmlCatalogLocalResolve
	xmlCatalogLocalResolveURI
	
	/* Preference settings */
	xmlCatalogSetDebug
	xmlCatalogSetDefaultPrefer
	xmlCatalogSetDefaults
	xmlCatalogGetDefaults
	
	/* DEPRECATED interfaces */
	xmlCatalogGetSystem
	xmlCatalogGetPublic
#endif /* LIBXML_CATALOG_ENABLED */


/* debugXML.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_DEBUG_ENABLED
	/* The standard Dump routines */
	xmlDebugDumpString
	xmlDebugDumpAttr
	xmlDebugDumpAttrList
	xmlDebugDumpOneNode
	xmlDebugDumpNode
	xmlDebugDumpNodeList
	xmlDebugDumpDocumentHead
	xmlDebugDumpDocument
	xmlDebugDumpDTD
	xmlDebugDumpEntities
	xmlLsOneNode
	xmlLsCountNode
	xmlBoolToText
	
	/* ??? */
	xmlShellPrintXPathError
	xmlShellPrintNode
	xmlShellPrintXPathResult
	xmlShellList
	xmlShellBase
	xmlShellDir
	xmlShellCat
	xmlShellLoad
	xmlShellWrite
	xmlShellSave
	xmlShellValidate
	xmlShellDu
	xmlShellPwd

	/* The Shell interface. */
	xmlShell
#endif /* LIBXML_DEBUG_ENABLED */


/* DOCBParser.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_DOCB_ENABLED
	/* There is only few public functions. */
	docbEncodeEntities
	docbSAXParseDoc
	docbParseDoc
	docbSAXParseFile
	docbParseFile

	/* Interfaces for the Push mode */
	docbFreeParserCtxt
	docbCreatePushParserCtxt
	docbParseChunk
	docbCreateFileParserCtxt
	docbParseDocument
#endif /* LIBXML_DOCB_ENABLED */


/* encoding.h 
   --------------------------------------------------------------------- */
	/* Interfaces for encoding handlers */
	xmlInitCharEncodingHandlers
	xmlCleanupCharEncodingHandlers
	xmlRegisterCharEncodingHandler
	xmlGetCharEncodingHandler
	xmlFindCharEncodingHandler

	/* Interfaces for encoding names and aliases */
	xmlAddEncodingAlias
	xmlDelEncodingAlias
	xmlGetEncodingAlias
	xmlCleanupEncodingAliases
	xmlParseCharEncoding
	xmlGetCharEncodingName

	/* Interfaces directly used by the parsers. */
	xmlDetectCharEncoding
	xmlCharEncOutFunc
	xmlCharEncInFunc
	xmlCharEncFirstLine
	xmlCharEncCloseFunc

	/* Export a few useful functions */
	UTF8Toisolat1
	isolat1ToUTF8

	/* exports additional "UTF-8 aware" string routines which are */
	xmlCheckUTF8
	xmlUTF8Strsize
	xmlUTF8Strndup
	xmlUTF8Strpos
	xmlUTF8Strloc
	xmlUTF8Strsub
	xmlUTF8Strlen


/* entities.h 
   --------------------------------------------------------------------- */
	xmlInitializePredefinedEntities
	xmlAddDocEntity
	xmlAddDtdEntity
	xmlGetPredefinedEntity
	xmlGetDocEntity
	xmlGetDtdEntity
	xmlGetParameterEntity
	xmlEncodeEntities
	xmlEncodeEntitiesReentrant
	xmlEncodeSpecialChars
	xmlCreateEntitiesTable
	xmlCopyEntitiesTable
	xmlFreeEntitiesTable
	xmlDumpEntitiesTable
	xmlDumpEntityDecl
xmlCleanupPredefinedEntities


/* globals.h 
   --------------------------------------------------------------------- */
	xmlInitializeGlobalState

	/* Memory */
#ifdef LIBXML_THREAD_ALLOC_ENABLED
#ifdef LIBXML_THREAD_ENABLED
	__xmlMalloc
	__xmlRealloc
	__xmlFree
	__xmlMemStrdup
#else
	xmlMalloc DATA
	xmlRealloc DATA
	xmlFree DATA
	xmlMemStrdup DATA
#endif
#else /* !LIBXML_THREAD_ALLOC_ENABLED */
	xmlMalloc DATA
	xmlRealloc DATA
	xmlFree DATA
	xmlMemStrdup DATA
#endif /* LIBXML_THREAD_ALLOC_ENABLED */
	
	/* Autogenerated (not here, but in the globals.h) */
#ifdef LIBXML_THREAD_ENABLED
	#ifdef LIBXML_DOCB_ENABLED
		__docbDefaultSAXHandler
	#endif
	#ifdef LIBXML_HTML_ENABLED
		__htmlDefaultSAXHandler
	#endif
	__oldXMLWDcompatibility
	__xmlBufferAllocScheme
	__xmlDefaultBufferSize
	__xmlDefaultSAXHandler
	__xmlDefaultSAXLocator
	__xmlDoValidityCheckingDefaultValue
	__xmlGenericError
	__xmlGenericErrorContext
	__xmlGetWarningsDefaultValue
	__xmlIndentTreeOutput
	__xmlTreeIndentString
	__xmlKeepBlanksDefaultValue
	__xmlLineNumbersDefaultValue
	__xmlLoadExtDtdDefaultValue
	__xmlParserDebugEntities
	__xmlParserVersion
	__xmlPedanticParserDefaultValue
	__xmlSaveNoEmptyTags
	__xmlSubstituteEntitiesDefaultValue
#else /* LIBXML_THREAD_ENABLED */
	#ifdef LIBXML_DOCB_ENABLED
		docbDefaultSAXHandler DATA
	#endif
	#ifdef LIBXML_HTML_ENABLED
		htmlDefaultSAXHandler DATA
	#endif
	oldXMLWDcompatibility DATA
	xmlBufferAllocScheme DATA
	xmlDefaultBufferSize DATA
	xmlDefaultSAXHandler DATA
	xmlDefaultSAXLocator DATA
	xmlDoValidityCheckingDefaultValue DATA
	xmlGenericError DATA
	xmlGenericErrorContext DATA
	xmlGetWarningsDefaultValue DATA
	xmlIndentTreeOutput DATA
	xmlTreeIndentString DATA
	xmlKeepBlanksDefaultValue DATA
	xmlLineNumbersDefaultValue DATA
	xmlLoadExtDtdDefaultValue DATA
	xmlParserDebugEntities DATA
	xmlParserVersion DATA
	xmlPedanticParserDefaultValue DATA
	xmlSaveNoEmptyTags DATA
	xmlSubstituteEntitiesDefaultValue DATA
#endif /* LIBXML_THREAD_ENABLED */


/* hash.h 
   --------------------------------------------------------------------- */
	/* Constructor and destructor */
	xmlHashCreate
	xmlHashFree
	
	/* Add a new entry to the hash table */
	xmlHashAddEntry
	xmlHashUpdateEntry
	xmlHashAddEntry2
	xmlHashUpdateEntry2
	xmlHashAddEntry3
	xmlHashUpdateEntry3

	/* Remove an entry from the hash table */
	xmlHashRemoveEntry
	xmlHashRemoveEntry2
	xmlHashRemoveEntry3

	/* Retrieve the userdata */
	xmlHashLookup
	xmlHashLookup2
	xmlHashLookup3

	/* Helpers */
	xmlHashCopy
	xmlHashSize
	xmlHashScan
	xmlHashScan3
	xmlHashScanFull
	xmlHashScanFull3


/* HTMLparser.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_HTML_ENABLED
	/* There is only few public functions. */
	htmlTagLookup
	htmlEntityLookup
	htmlEntityValueLookup
	htmlIsAutoClosed
	htmlAutoCloseTag
	htmlParseEntityRef
	htmlParseCharRef
	htmlParseElement
	htmlParseDocument
	htmlSAXParseDoc
	htmlParseDoc
	htmlSAXParseFile
	htmlParseFile
	UTF8ToHtml
	htmlEncodeEntities
	htmlIsScriptAttribute
	htmlHandleOmittedElem

	/* Interfaces for the Push mode */
	htmlFreeParserCtxt
	htmlCreatePushParserCtxt
	htmlParseChunk
#endif /* LIBXML_HTML_ENABLED */


/* HTMLtree.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_HTML_ENABLED
	htmlNewDoc
	htmlNewDocNoDtD
	htmlGetMetaEncoding
	htmlSetMetaEncoding
	htmlDocDumpMemory
	htmlDocDump
	htmlSaveFile
	htmlNodeDump
	htmlNodeDumpFile
	htmlNodeDumpFileFormat
	htmlSaveFileEnc
	htmlSaveFileFormat
	htmlNodeDumpFormatOutput
	htmlDocContentDumpOutput
	htmlDocContentDumpFormatOutput
	htmlIsBooleanAttr
#endif /* LIBXML_HTML_ENABLED */


/* list.h 
   --------------------------------------------------------------------- */
	/* Creation/Deletion */
	xmlListCreate
	xmlListDelete
	
	/* Basic Operators */
	xmlListSearch
	xmlListReverseSearch
	xmlListInsert
	xmlListAppend
	xmlListRemoveFirst
	xmlListRemoveLast
	xmlListRemoveAll
	xmlListClear
	xmlListEmpty
	xmlListFront
	xmlListEnd
	xmlListSize
	xmlListPopFront
	xmlListPopBack
	xmlListPushFront
	xmlListPushBack

	/* Advanced Operators */
	xmlListReverse
	xmlListSort
	xmlListWalk
	xmlListReverseWalk
	xmlListMerge
	xmlListDup
	xmlListCopy
	xmlLinkGetData


/* nanoftp.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_FTP_ENABLED
	/* Init */
	xmlNanoFTPInit
	xmlNanoFTPCleanup
	
	/* Creating/freeing contexts */
	xmlNanoFTPNewCtxt
	xmlNanoFTPFreeCtxt
	xmlNanoFTPConnectTo

	/* Opening/closing session connections */
	xmlNanoFTPOpen
	xmlNanoFTPConnect
	xmlNanoFTPClose
	xmlNanoFTPQuit
	xmlNanoFTPScanProxy
	xmlNanoFTPProxy
	xmlNanoFTPUpdateURL

	/* Rathern internal commands */
	xmlNanoFTPGetResponse
	xmlNanoFTPCheckResponse

	/* CD/DIR/GET handlers */
	xmlNanoFTPCwd
	xmlNanoFTPGetConnection
	xmlNanoFTPCloseConnection
	xmlNanoFTPList
	xmlNanoFTPGetSocket
	xmlNanoFTPGet
	xmlNanoFTPRead
#endif /* LIBXML_FTP_ENABLED */


/* nanohttp.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_HTTP_ENABLED
	xmlNanoHTTPInit
	xmlNanoHTTPCleanup
	xmlNanoHTTPScanProxy
	xmlNanoHTTPFetch
	xmlNanoHTTPMethod
	xmlNanoHTTPMethodRedir
	xmlNanoHTTPOpen
	xmlNanoHTTPOpenRedir
	xmlNanoHTTPReturnCode
	xmlNanoHTTPAuthHeader
	xmlNanoHTTPRead
	xmlNanoHTTPSave
	xmlNanoHTTPClose
#endif /* LIBXML_HTTP_ENABLED */


/* parser.h  
   --------------------------------------------------------------------- */
	// xmlParserVersion DATA <-- moved to the globals.h section
	// xmlDefaultSAXLocator DATA <-- moved to the globals.h section
	// xmlDefaultSAXHandler DATA <-- moved to the globals.h section
	//#ifdef LIBXML_HTML_ENABLED <-- moved to the globals.h section
	//	htmlDefaultSAXHandler DATA <-- moved to the globals.h section
	//#endif <-- moved to globals.h section
	//#ifdef LIBXML_DOCB_ENABLED <-- moved to the globals.h section
	//	docbDefaultSAXHandler DATA <-- moved to the globals.h section
	//#endif <-- moved to globals.h section
	// xmlSubstituteEntitiesDefaultValue DATA <-- moved to globals.h section
	// xmlGetWarningsDefaultValue DATA <-- moved to globals.h section

	/* Init/Cleanup */
	xmlInitParser
	xmlCleanupParser
	
	/* Input functions */
	xmlParserInputRead
	xmlParserInputGrow

	/* xmlChar handling */
	xmlStrdup
	xmlStrndup
	xmlCharStrndup
	xmlCharStrdup
	xmlStrsub
	xmlStrchr
	xmlStrstr
	xmlStrcasestr
	xmlStrcmp
	xmlStrncmp
	xmlStrcasecmp
	xmlStrncasecmp
	xmlStrEqual
	xmlStrlen
	xmlStrcat
	xmlStrncat

	/* Basic parsing Interfaces */
	xmlParseDoc
	xmlParseMemory
	xmlParseFile
	xmlSubstituteEntitiesDefault
	xmlKeepBlanksDefault
	xmlStopParser
	xmlPedanticParserDefault
	xmlLineNumbersDefault

	/* Recovery mode */
	xmlRecoverDoc
	xmlRecoverMemory
	xmlRecoverFile

	/* Less common routines and SAX interfaces */
	xmlParseDocument
	xmlParseExtParsedEnt
	xmlSAXParseDoc
	xmlSAXUserParseFile
	xmlSAXUserParseMemory
	xmlSAXParseMemory
	xmlSAXParseFile
	xmlSAXParseFileWithData
	xmlSAXParseEntity
	xmlParseEntity
	xmlParseDTD
	xmlSAXParseDTD
	xmlIOParseDTD
	xmlParseBalancedChunkMemory
	xmlParseExternalEntity
	xmlParseCtxtExternalEntity

	/* SAX initialization routines */
	xmlDefaultSAXHandlerInit
	#ifdef LIBXML_HTML_ENABLED
		htmlDefaultSAXHandlerInit
	#endif /* LIBXML_HTML_ENABLED */
	
	/* Parser contexts handling. */
	xmlInitParserCtxt
	xmlClearParserCtxt
	xmlFreeParserCtxt
	xmlSetupParserForBuffer
	xmlCreateDocParserCtxt

	/* Reading/setting optional parsing features. */
	xmlGetFeaturesList
	xmlGetFeature
	xmlSetFeature

	/* Interfaces for the Push mode */
	xmlCreatePushParserCtxt
	xmlParseChunk

	/* Special I/O mode */
	xmlCreateIOParserCtxt
	xmlNewIOInputStream

	/* Node infos */
	xmlParserFindNodeInfo
	xmlInitNodeInfoSeq
	xmlClearNodeInfoSeq
	xmlParserFindNodeInfoIndex
	xmlParserAddNodeInfo

	/* External entities handling actually implemented in xmlIO */
	xmlSetExternalEntityLoader
	xmlGetExternalEntityLoader
	xmlLoadExternalEntity


/* parserinternals.h 
   --------------------------------------------------------------------- */
	/* Global variables used for predefined strings */
	xmlStringText DATA
	xmlStringTextNoenc DATA
	xmlStringComment DATA

	/* Function to finish the work of the macros where needed */
	xmlIsBaseChar
	xmlIsBlank
	xmlIsPubidChar
	xmlIsLetter
	xmlIsDigit
	xmlIsIdeographic
	xmlIsCombining
	xmlIsExtender
	xmlIsCombining
	xmlIsChar

	/* Parser context */
	xmlCreateDocParserCtxt
	xmlCreateFileParserCtxt
	xmlCreateMemoryParserCtxt
	xmlNewParserCtxt
	xmlCreateEntityParserCtxt
	xmlSwitchEncoding
	xmlSwitchToEncoding
	xmlFreeParserCtxt

	/* Entities */
	xmlHandleEntity

	/* Input Streams */
	xmlNewStringInputStream
	xmlNewEntityInputStream
	xmlPushInput
	xmlPopInput
	xmlFreeInputStream
	xmlNewInputFromFile
	xmlNewInputStream

	/* Namespaces. */
	xmlSplitQName
	xmlNamespaceParseNCName
	xmlNamespaceParseQName
	xmlNamespaceParseNSDef
	xmlParseQuotedString
	xmlParseNamespace

	/* Generic production rules */
	xmlScanName
	xmlParseName
	xmlParseNmtoken
	xmlParseEntityValue
	xmlParseAttValue
	xmlParseSystemLiteral
	xmlParsePubidLiteral
	xmlParseCharData
	xmlParseExternalID
	xmlParseComment
	xmlParsePITarget
	xmlParsePI
	xmlParseNotationDecl
	xmlParseEntityDecl
	xmlParseDefaultDecl
	xmlParseNotationType
	xmlParseEnumerationType
	xmlParseEnumeratedType
	xmlParseAttributeType
	xmlParseAttributeListDecl
	xmlParseElementMixedContentDecl
	xmlParseElementChildrenContentDecl
	xmlParseElementContentDecl
	xmlParseElementDecl
	xmlParseMarkupDecl
	xmlParseCharRef
	xmlParseEntityRef
	xmlParseReference
	xmlParsePEReference
	xmlParseDocTypeDecl
	xmlParseAttribute
	xmlParseStartTag
	xmlParseEndTag
	xmlParseCDSect
	xmlParseContent
	xmlParseElement
	xmlParseVersionNum
	xmlParseVersionInfo
	xmlParseEncName
	xmlParseEncodingDecl
	xmlParseSDDecl
	xmlParseXMLDecl
	xmlParseTextDecl
	xmlParseMisc
	xmlParseExternalSubset

	xmlDecodeEntities
	xmlStringDecodeEntities

	/* Generated by MACROS on top of parser.c c.f. PUSH_AND_POP */
	nodePush
	nodePop
	inputPush
	inputPop
	namePop
	namePush

	/* other comodities shared between parser.c and parserInternals */
	xmlSkipBlankChars
	xmlStringCurrentChar
	xmlParserHandlePEReference
	xmlParserHandleReference
	xmlCheckLanguageID

	/* Really core function shared with HTML parser */
	xmlCurrentChar
	xmlCopyCharMultiByte
	xmlCopyChar
	xmlNextChar
	xmlParserInputShrink
	
	/* Actually comes from the HTML parser but launched from the init stuff */
	#ifdef LIBXML_HTML_ENABLED
		htmlInitAutoClose
		htmlCreateFileParserCtxt
	#endif /* LIBXML_HTML_ENABLED */

	/* Specific function to keep track of entities references and used by the XSLT debugger. */
	xmlSetEntityReferenceFunc

/* SAX.h
   --------------------------------------------------------------------- */
	getPublicId
	getSystemId
	setDocumentLocator
	getLineNumber
	getColumnNumber
	isStandalone
	hasInternalSubset
	hasExternalSubset
	internalSubset
	externalSubset
	getEntity
	getParameterEntity
	resolveEntity
	entityDecl
	attributeDecl
	elementDecl
	notationDecl
	unparsedEntityDecl
	startDocument
	endDocument
	attribute
	startElement
	endElement
	reference
	characters
	ignorableWhitespace
	processingInstruction
	globalNamespace
	setNamespace
	getNamespace
	checkNamespace
	namespaceDecl
	comment
	cdataBlock
	initxmlDefaultSAXHandler
	xmlDefaultSAXHandlerInit
	#ifdef LIBXML_HTML_ENABLED
		htmlDefaultSAXHandlerInit
		inithtmlDefaultSAXHandler
	#endif /* LIBXML_HTML_ENABLED */
	#ifdef LIBXML_DOCB_ENABLED
		docbDefaultSAXHandlerInit
		initdocbDefaultSAXHandler
	#endif /* LIBXML_DOCB_ENABLED */


/* tree.h 
   --------------------------------------------------------------------- */
	/* Variables. */
	// baseDTD DATA <-- has been removed from the code
	// oldXMLWDcompatibility DATA <-- moved to the globals.h section
	// xmlIndentTreeOutput DATA <-- moved to the globals.h section
	// xmlBufferAllocScheme DATA <-- moved to the globals.h section
	// xmlSaveNoEmptyTags DATA <-- moved to the globals.h section
	// xmlDefaultBufferSize DATA <-- moved to the globals.h section
	
	/* handling buffers */	
	xmlSetBufferAllocationScheme
	xmlGetBufferAllocationScheme
	xmlBufferCreate
	xmlBufferCreateSize
	xmlBufferResize
	xmlBufferFree
	xmlBufferDump
	xmlBufferAdd
	xmlBufferAddHead
	xmlBufferCat
	xmlBufferCCat
	xmlBufferShrink
	xmlBufferGrow
	xmlBufferEmpty
	xmlBufferContent
	xmlBufferSetAllocationScheme
	xmlBufferLength

	/* Creating/freeing new structures */
	xmlCreateIntSubset
	xmlNewDtd
	xmlGetIntSubset
	xmlFreeDtd
	xmlNewGlobalNs
	xmlNewNs
	xmlFreeNs
	xmlFreeNsList
	xmlNewDoc
	xmlFreeDoc
	xmlNewDocProp
	xmlNewProp
	xmlNewNsProp
	xmlNewNsPropEatName
	xmlFreePropList
	xmlFreeProp
	xmlCopyProp
	xmlCopyPropList
	xmlCopyDtd
	xmlCopyDoc
	
	/* Creating new nodes */
	xmlNewDocNode
	xmlNewDocNodeEatName
	xmlNewDocRawNode
	xmlNewNode
	xmlNewNodeEatName
	xmlNewChild
	xmlNewTextChild
	xmlNewDocText
	xmlNewText
	xmlNewPI
	xmlNewDocTextLen
	xmlNewTextLen
	xmlNewDocComment
	xmlNewComment
	xmlNewCDataBlock
	xmlNewCharRef
	xmlNewReference
	xmlCopyNode
	xmlDocCopyNode
	xmlCopyNodeList
	xmlNewDocFragment
	
	/* Navigating */
	xmlGetLineNo
	xmlGetNodePath
	xmlDocGetRootElement
	xmlGetLastChild
	xmlNodeIsText
	xmlIsBlankNode
	
	/* Changing the structure */
	xmlDocSetRootElement
	xmlNodeSetName
	xmlAddChild
	xmlAddChildList
	xmlReplaceNode
	xmlAddSibling
	xmlAddPrevSibling
	xmlAddNextSibling
	xmlUnlinkNode
	xmlTextMerge
	xmlTextConcat
	xmlFreeNodeList
	xmlFreeNode
	xmlSetTreeDoc
	xmlSetListDoc
	
	/* Namespaces */
	xmlSearchNs
	xmlSearchNsByHref
	xmlGetNsList
	xmlSetNs
	xmlCopyNamespace
	xmlCopyNamespaceList
	
	/* Changing the content. */
	xmlSetProp
	xmlGetProp
	xmlHasProp
	xmlHasNsProp
	xmlSetNsProp
	xmlGetNsProp
	xmlStringGetNodeList
	xmlStringLenGetNodeList
	xmlNodeListGetString
	xmlNodeListGetRawString
	xmlNodeSetContent
	xmlNodeSetContentLen
	xmlNodeAddContent
	xmlNodeAddContentLen
	xmlNodeGetContent
	xmlNodeGetLang
	xmlNodeSetLang
	xmlNodeGetSpacePreserve
	xmlNodeSetSpacePreserve
	xmlNodeGetBase
	xmlNodeSetBase
	
	/* Removing content. */
	xmlRemoveProp
	xmlUnsetProp
	xmlUnsetNsProp

	/* Internal, don't use */
	xmlBufferWriteCHAR
	xmlBufferWriteChar
	xmlBufferWriteQuotedString

	/* Namespace handling */
	xmlReconciliateNs

	/* Saving */
	xmlDocDumpFormatMemory
	xmlDocDumpMemory
	xmlDocDumpMemoryEnc
	xmlDocDumpFormatMemoryEnc
	xmlDocFormatDump
	xmlDocDump
	xmlElemDump
	xmlSaveFile
	xmlSaveFormatFile
	xmlNodeDump
	xmlSaveFileTo
	xmlSaveFormatFileTo
	xmlNodeDumpOutput
	xmlSaveFormatFileEnc
	xmlSaveFileEnc

	/* XHTML */
	xmlIsXHTML

	/* Compression */
	xmlGetDocCompressMode
	xmlSetDocCompressMode
	xmlGetCompressMode
	xmlSetCompressMode


/* uri.h
   --------------------------------------------------------------------- */
	xmlCreateURI
	xmlBuildURI
	xmlParseURI
	xmlParseURIReference
	xmlSaveUri
	xmlPrintURI
	xmlURIEscapeStr
	xmlURIUnescapeString
	xmlNormalizeURIPath
	xmlURIEscape
	xmlFreeURI


/* valid.h
   --------------------------------------------------------------------- */
	/* helper */
	xmlSplitQName2

	/* Notation */
	xmlAddNotationDecl
	xmlCopyNotationTable
	xmlFreeNotationTable
	xmlDumpNotationDecl
	xmlDumpNotationTable

	/* Element Content */
	xmlNewElementContent
	xmlCopyElementContent
	xmlFreeElementContent
	xmlSnprintfElementContent
	
	/* DEPRECATED */
	xmlSprintfElementContent
	
	/* Element */
	xmlAddElementDecl
	xmlCopyElementTable
	xmlFreeElementTable
	xmlDumpElementTable
	xmlDumpElementDecl

	/* Enumeration */
	xmlCreateEnumeration
	xmlFreeEnumeration
	xmlCopyEnumeration

	/* Attribute */
	xmlAddAttributeDecl
	xmlCopyAttributeTable
	xmlFreeAttributeTable
	xmlDumpAttributeTable
	xmlDumpAttributeDecl
	
	/* IDs */
	xmlAddID
	xmlFreeIDTable
	xmlGetID
	xmlIsID
	xmlRemoveID

	/* IDREFs */
	xmlAddRef
	xmlFreeRefTable
	xmlIsRef
	xmlRemoveRef
	xmlGetRefs

	/* The public function calls related to validity checking */
	xmlValidateRoot
	xmlValidateElementDecl
	xmlValidNormalizeAttributeValue
	xmlValidateAttributeDecl
	xmlValidateAttributeValue
	xmlValidateNotationDecl
	xmlValidateDtd
	xmlValidateDtdFinal
	xmlValidateDocument
	xmlValidateElement
	xmlValidateOneElement
	xmlValidateOneAttribute
	xmlValidateDocumentFinal
	xmlValidateNotationUse
	xmlIsMixedElement
	xmlGetDtdAttrDesc
	xmlGetDtdQAttrDesc
	xmlGetDtdNotationDesc
	xmlGetDtdQElementDesc
	xmlGetDtdElementDesc
	xmlValidGetValidElements
	xmlValidGetPotentialChildren
	xmlValidateNameValue
	xmlValidateNamesValue
	xmlValidateNmtokenValue
	xmlValidateNmtokensValue
	#ifdef LIBXML_REGEXP_ENABLED
		xmlValidBuildContentModel
	#endif /* LIBXML_REGEXP_ENABLED */


/* xinclude.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_XINCLUDE_ENABLED
	xmlXIncludeProcess
#endif /* LIBXML_XINCLUDE_ENABLED */


/* xlink.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_XLINK_INCLUDED
	xlinkGetDefaultDetect
	xlinkSetDefaultDetect
	xlinkGetDefaultHandler
	xlinkSetDefaultHandler
	xlinkIsLink
#endif


/* xmlautomata.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_AUTOMATA_ENABLED
	/* Building API */
	xmlNewAutomata
	xmlFreeAutomata
	xmlAutomataGetInitState
	xmlAutomataSetFinalState
	xmlAutomataNewState
	xmlAutomataNewTransition
	xmlAutomataNewCountTrans
	xmlAutomataNewOnceTrans
	xmlAutomataNewAllTrans
	xmlAutomataNewEpsilon
	xmlAutomataNewCountedTrans
	xmlAutomataNewCounterTrans
	xmlAutomataNewCounter
	xmlAutomataCompile
	xmlAutomataIsDeterminist
#endif /* LIBXML_AUTOMATA_ENABLED */


/* xmlerror.h 
   --------------------------------------------------------------------- */
	xmlSetGenericErrorFunc
	initGenericErrorDefaultFunc
	xmlParserError
	xmlParserWarning
	xmlParserValidityError
	xmlParserValidityWarning
	xmlParserPrintFileInfo
	xmlParserPrintFileContext
	// xmlGenericError DATA <-- moved to the globals.h section
	// xmlGenericErrorContext DATA <-- moved to the globals.h section


/* xmlIO.h 
   --------------------------------------------------------------------- */
	/* Interfaces for input */
	xmlCleanupInputCallbacks
	xmlCleanupOutputCallbacks
	xmlRegisterDefaultInputCallbacks
	xmlAllocParserInputBuffer
	xmlParserInputBufferCreateFilename
	xmlParserInputBufferCreateFile
	xmlParserInputBufferCreateFd
	xmlParserInputBufferCreateMem
	xmlParserInputBufferCreateIO
	xmlParserInputBufferRead
	xmlParserInputBufferGrow
	xmlParserInputBufferPush
	xmlFreeParserInputBuffer
	xmlParserGetDirectory
	xmlRegisterInputCallbacks

	/* Interfaces for output */
	xmlRegisterDefaultOutputCallbacks
	xmlAllocOutputBuffer
	xmlOutputBufferCreateFilename
	xmlOutputBufferCreateFile
	xmlOutputBufferCreateFd
	xmlOutputBufferCreateIO
	xmlOutputBufferWrite
	xmlOutputBufferWriteString
	xmlOutputBufferFlush
	xmlOutputBufferClose
	xmlRegisterOutputCallbacks
	#ifdef LIBXML_HTTP_ENABLED
		xmlIOHTTPOpenW
		xmlRegisterHTTPPostCallbacks
	#endif /* LIBXML_HTTP_ENABLED */
	xmlNoNetExternalEntityLoader

	xmlNormalizeWindowsPath
	xmlCheckFilename

	/**
	 * Default 'file://' protocol callbacks 
	 */
	xmlFileMatch
	xmlFileOpen 
	xmlFileRead 
	xmlFileClose

	/**
	 * Default 'http://' protocol callbacks 
	 */
	#ifdef LIBXML_HTTP_ENABLED
    	xmlIOHTTPMatch
	xmlIOHTTPOpen 
 	xmlIOHTTPRead
        xmlIOHTTPClose
	#endif /* LIBXML_HTTP_ENABLED */

	/**
	 * Default 'ftp://' protocol callbacks 
	 */
	#ifdef LIBXML_FTP_ENABLED 
	xmlIOFTPMatch 
	xmlIOFTPOpen 
 	xmlIOFTPRead
 	xmlIOFTPClose
	#endif /* LIBXML_FTP_ENABLED */

/* xmlmemory.h 
   --------------------------------------------------------------------- */
	// xmlFree DATA <-- moved to the globals.h section
	// xmlMalloc DATA <-- moved to the globals.h section
	// xmlRealloc DATA <-- moved to the globals.h section
	// xmlMemStrdup DATA <-- moved to the globals.h section
	xmlMemSetup
	xmlMemGet
	xmlInitMemory
	xmlMemUsed
	xmlMemDisplay
	xmlMemShow
	xmlMemoryDump
	#ifdef DEBUG_MEMORY_LOCATION
		xmlMallocLoc
		xmlReallocLoc
		xmlMemStrdupLoc
	#endif /* DEBUG_MEMORY_LOCATION */
	/* xmlmemory.c subgrup */
	xmlMemMalloc
	xmlMemRealloc
	xmlMemFree
	xmlMemoryStrdup


/* xmlregexp.h 
   --------------------------------------------------------------------- */

#ifdef LIBXML_REGEXP_ENABLED
	/* The POSIX like API */
	xmlRegexpCompile
	xmlRegFreeRegexp
	xmlRegexpExec
	xmlRegexpPrint
	xmlRegexpIsDeterminist

	/* The progressive API */
	xmlRegNewExecCtxt
	xmlRegFreeExecCtxt
	xmlRegExecPushString		
#endif /* LIBXML_REGEXP_ENABLED */


/* xmlschemas.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_SCHEMAS_ENABLED
	/* Interfaces for parsing. */
	xmlSchemaNewParserCtxt
	xmlSchemaNewMemParserCtxt
	xmlSchemaFreeParserCtxt
	xmlSchemaSetParserErrors
	xmlSchemaParse
	xmlSchemaFree
	xmlSchemaDump

	/* Interfaces for validating */
	xmlSchemaSetValidErrors
	xmlSchemaNewValidCtxt
	xmlSchemaFreeValidCtxt
	xmlSchemaValidateDoc
	xmlSchemaValidateStream
#endif /* LIBXML_SCHEMAS_ENABLED */


/* xmlschemastypes.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_SCHEMAS_ENABLED
	xmlSchemaInitTypes
	xmlSchemaCleanupTypes
	xmlSchemaGetPredefinedType
	xmlSchemaValidatePredefinedType
	xmlSchemaValidateFacet
	xmlSchemaFreeValue
#endif /* LIBXML_SCHEMAS_ENABLED */


/* xmlunicode.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_SCHEMAS_ENABLED
	xmlUCSIsAlphabeticPresentationForms
	xmlUCSIsArabic
	xmlUCSIsArabicPresentationFormsA
	xmlUCSIsArabicPresentationFormsB
	xmlUCSIsArmenian
	xmlUCSIsArrows
	xmlUCSIsBasicLatin
	xmlUCSIsBengali
	xmlUCSIsBlockElements
	xmlUCSIsBopomofo
	xmlUCSIsBopomofoExtended
	xmlUCSIsBoxDrawing
	xmlUCSIsBraillePatterns
	xmlUCSIsByzantineMusicalSymbols
	xmlUCSIsCJKCompatibility
	xmlUCSIsCJKCompatibilityForms
	xmlUCSIsCJKCompatibilityIdeographs
	xmlUCSIsCJKCompatibilityIdeographsSupplement
	xmlUCSIsCJKRadicalsSupplement
	xmlUCSIsCJKSymbolsandPunctuation
	xmlUCSIsCJKUnifiedIdeographs
	xmlUCSIsCJKUnifiedIdeographsExtensionA
	xmlUCSIsCJKUnifiedIdeographsExtensionB
	xmlUCSIsCherokee
	xmlUCSIsCombiningDiacriticalMarks
	xmlUCSIsCombiningHalfMarks
	xmlUCSIsCombiningMarksforSymbols
	xmlUCSIsControlPictures
	xmlUCSIsCurrencySymbols
	xmlUCSIsCyrillic
	xmlUCSIsDeseret
	xmlUCSIsDevanagari
	xmlUCSIsDingbats
	xmlUCSIsEnclosedAlphanumerics
	xmlUCSIsEnclosedCJKLettersandMonths
	xmlUCSIsEthiopic
	xmlUCSIsGeneralPunctuation
	xmlUCSIsGeometricShapes
	xmlUCSIsGeorgian
	xmlUCSIsGothic
	xmlUCSIsGreek
	xmlUCSIsGreekExtended
	xmlUCSIsGujarati
	xmlUCSIsGurmukhi
	xmlUCSIsHalfwidthandFullwidthForms
	xmlUCSIsHangulCompatibilityJamo
	xmlUCSIsHangulJamo
	xmlUCSIsHangulSyllables
	xmlUCSIsHebrew
	xmlUCSIsHighPrivateUseSurrogates
	xmlUCSIsHighSurrogates
	xmlUCSIsHiragana
	xmlUCSIsIPAExtensions
	xmlUCSIsIdeographicDescriptionCharacters
	xmlUCSIsKanbun
	xmlUCSIsKangxiRadicals
	xmlUCSIsKannada
	xmlUCSIsKatakana
	xmlUCSIsKhmer
	xmlUCSIsLao
	xmlUCSIsLatin1Supplement
	xmlUCSIsLatinExtendedA
	xmlUCSIsLatinExtendedB
	xmlUCSIsLatinExtendedAdditional
	xmlUCSIsLetterlikeSymbols
	xmlUCSIsLowSurrogates
	xmlUCSIsMalayalam
	xmlUCSIsMathematicalAlphanumericSymbols
	xmlUCSIsMathematicalOperators
	xmlUCSIsMiscellaneousSymbols
	xmlUCSIsMiscellaneousTechnical
	xmlUCSIsMongolian
	xmlUCSIsMusicalSymbols
	xmlUCSIsMyanmar
	xmlUCSIsNumberForms
	xmlUCSIsOgham
	xmlUCSIsOldItalic
	xmlUCSIsOpticalCharacterRecognition
	xmlUCSIsOriya
	xmlUCSIsPrivateUse
	xmlUCSIsRunic
	xmlUCSIsSinhala
	xmlUCSIsSmallFormVariants
	xmlUCSIsSpacingModifierLetters
	xmlUCSIsSpecials
	xmlUCSIsSuperscriptsandSubscripts
	xmlUCSIsSyriac
	xmlUCSIsTags
	xmlUCSIsTamil
	xmlUCSIsTelugu
	xmlUCSIsThaana
	xmlUCSIsThai
	xmlUCSIsTibetan
	xmlUCSIsUnifiedCanadianAboriginalSyllabics
	xmlUCSIsYiRadicals
	xmlUCSIsYiSyllables
	xmlUCSIsBlock
	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
	xmlUCSIsCat
#endif /* LIBXML_SCHEMAS_ENABLED */


/* xmlversion.h 
   --------------------------------------------------------------------- */
	xmlCheckVersion


/* xpath.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_XPATH_ENABLED
	/* Objects and Nodesets handling */
	xmlXPathNAN DATA
	xmlXPathPINF DATA
	xmlXPathNINF DATA
	xmlXPathIsNaN
	xmlXPathIsInf
	
	xmlXPathFreeObject
	xmlXPathNodeSetCreate
	xmlXPathFreeNodeSetList
	xmlXPathFreeNodeSet
	xmlXPathObjectCopy
	xmlXPathCmpNodes

	/* Conversion functions to basic types */
	xmlXPathCastNumberToBoolean
	xmlXPathCastStringToBoolean
	xmlXPathCastNodeSetToBoolean
	xmlXPathCastToBoolean
	xmlXPathCastBooleanToNumber
	xmlXPathCastStringToNumber
	xmlXPathCastNodeToNumber
	xmlXPathCastNodeSetToNumber
	xmlXPathCastToNumber
	xmlXPathCastBooleanToString
	xmlXPathCastNumberToString
	xmlXPathCastNodeToString
	xmlXPathCastNodeSetToString
	xmlXPathCastToString
	xmlXPathConvertBoolean
	xmlXPathConvertNumber
	xmlXPathConvertString

	/* Context handling */
	xmlXPathInit
	xmlXPathNewContext
	xmlXPathFreeContext
	
	/* Evaluation functions. */
	xmlXPathEval
	xmlXPathEvalExpression
	xmlXPathEvalPredicate

	/* Separate compilation/evaluation entry points */
	xmlXPathCompile
	xmlXPathCompiledEval
	xmlXPathFreeCompExpr
#endif /* LIBXML_XPATH_ENABLED */


/* xpathinternals.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_XPATH_ENABLED
	xmlXPathPopBoolean
	xmlXPathPopNumber
	xmlXPathPopString
	xmlXPathPopNodeSet
	xmlXPathPopExternal

	/* Variable Lookup forwarding */
	xmlXPathRegisterVariableLookup

	/* Function Lookup forwarding */
	xmlXPathRegisterFuncLookup

	/* Error reporting */
	xmlXPatherror
	xmlXPathDebugDumpObject
	xmlXPathDebugDumpCompExpr

	/* NodeSet handling */
	xmlXPathNodeSetContains
	xmlXPathDifference
	xmlXPathIntersection
	xmlXPathDistinctSorted
	xmlXPathDistinct
	xmlXPathHasSameNodes
	xmlXPathNodeLeadingSorted
	xmlXPathLeadingSorted
	xmlXPathNodeLeading
	xmlXPathLeading
	xmlXPathNodeTrailingSorted
	xmlXPathTrailingSorted
	xmlXPathNodeTrailing
	xmlXPathTrailing

	/* Extending a context */
	xmlXPathRegisterNs
	xmlXPathNsLookup
	xmlXPathRegisteredNsCleanup
	xmlXPathRegisterFunc
	xmlXPathRegisterFuncNS
	xmlXPathRegisterVariable
	xmlXPathRegisterVariableNS
	xmlXPathFunctionLookup
	xmlXPathFunctionLookupNS
	xmlXPathRegisteredFuncsCleanup
	xmlXPathVariableLookup
	xmlXPathVariableLookupNS
	xmlXPathRegisteredVariablesCleanup

	/* Utilities to extend XPath */
	xmlXPathNewParserContext
	xmlXPathFreeParserContext

	/* TODO: remap to xmlXPathValuePop and Push */
	valuePop
	valuePush

	xmlXPathNewString
	xmlXPathNewCString
	xmlXPathWrapString
	xmlXPathWrapCString
	xmlXPathNewFloat
	xmlXPathNewBoolean
	xmlXPathNewNodeSet
	xmlXPathNewValueTree
	xmlXPathNodeSetAdd
	xmlXPathNodeSetAddUnique
	xmlXPathNodeSetAddNs
	xmlXPathNodeSetSort
	xmlXPathIdFunction
	xmlXPathRoot
	xmlXPathEvalExpr
	xmlXPathParseName
	xmlXPathParseNCName

	/* Debug */
	#ifdef LIBXML_DEBUG_ENABLED
		xmlXPathDebugDumpObject
		xmlXPathDebugDumpCompExpr
	#endif /* LIBXML_DEBUG_ENABLED */

	/* Existing functions */
	xmlXPathStringEvalNumber
	xmlXPathEvaluatePredicateResult
	xmlXPathInit
	xmlXPathStringFunction
	xmlXPathRegisterAllFunctions
	xmlXPathNodeSetCreate
	xmlXPathNodeSetAdd
	xmlXPathNodeSetMerge
	xmlXPathNodeSetDel
	xmlXPathNodeSetRemove
	xmlXPathFreeNodeSet
	xmlXPathNewNodeSet
	xmlXPathNewNodeSetList
	xmlXPathWrapNodeSet
	xmlXPathWrapExternal
	xmlXPathFreeNodeSetList

	xmlXPathNewFloat
	xmlXPathNewBoolean
	xmlXPathNewString
	xmlXPathNewCString
	xmlXPathFreeObject
	xmlXPathNewContext
	xmlXPathFreeContext

	xmlXPathEqualValues
	xmlXPathNotEqualValues
	xmlXPathCompareValues
	xmlXPathValueFlipSign
	xmlXPathAddValues
	xmlXPathSubValues
	xmlXPathMultValues
	xmlXPathDivValues
	xmlXPathModValues

	xmlXPathIsNodeType

	/* Some of the axis navigation routines */
	xmlXPathNextSelf
	xmlXPathNextChild
	xmlXPathNextDescendant
	xmlXPathNextDescendantOrSelf
	xmlXPathNextParent
	xmlXPathNextAncestorOrSelf
	xmlXPathNextFollowingSibling
	xmlXPathNextFollowing
	xmlXPathNextNamespace
	xmlXPathNextAttribute
	xmlXPathNextPreceding
	xmlXPathNextAncestor
	xmlXPathNextPrecedingSibling

	/* The official core of XPath functions */
	xmlXPathRoot
	xmlXPathLastFunction
	xmlXPathPositionFunction
	xmlXPathCountFunction
	xmlXPathIdFunction
	xmlXPathLocalNameFunction
	xmlXPathNamespaceURIFunction
	xmlXPathStringFunction
	xmlXPathStringLengthFunction
	xmlXPathConcatFunction
	xmlXPathContainsFunction
	xmlXPathStartsWithFunction
	xmlXPathSubstringFunction
	xmlXPathSubstringBeforeFunction
	xmlXPathSubstringAfterFunction
	xmlXPathNormalizeFunction
	xmlXPathTranslateFunction
	xmlXPathNotFunction
	xmlXPathTrueFunction
	xmlXPathFalseFunction
	xmlXPathLangFunction
	xmlXPathNumberFunction
	xmlXPathSumFunction
	xmlXPathFloorFunction
	xmlXPathCeilingFunction
	xmlXPathRoundFunction
	xmlXPathBooleanFunction

	/* really internal functions */
	xmlXPathNodeSetFreeNs
#endif /* LIBXML_XPATH_ENABLED */



/* xpointer.h 
   --------------------------------------------------------------------- */
#ifdef LIBXML_XPTR_ENABLED
	/* Handling of location sets */
	xmlXPtrLocationSetCreate
	xmlXPtrFreeLocationSet
	xmlXPtrLocationSetMerge
	xmlXPtrNewRange
	xmlXPtrNewRangePoints
	xmlXPtrNewRangeNodePoint
	xmlXPtrNewRangePointNode
	xmlXPtrNewRangeNodes
	xmlXPtrNewLocationSetNodes
	xmlXPtrNewLocationSetNodeSet
	xmlXPtrNewRangeNodeObject
	xmlXPtrNewCollapsedRange
	xmlXPtrLocationSetAdd
	xmlXPtrWrapLocationSet
	xmlXPtrLocationSetDel
	xmlXPtrLocationSetRemove

	/* Functions */
	xmlXPtrNewContext
	xmlXPtrEval
	xmlXPtrRangeToFunction
	xmlXPtrBuildNodeList
	xmlXPtrEvalRangePredicate
#endif /* LIBXML_XPTR_ENABLED */


