<?xml version="1.0" encoding="ISO-8859-1"?>
<api name='libxml2'>
  <files>
    <file name='debugXML'>
     <exports symbol='_xmlShellCtxt'/>
     <exports symbol='xmlBoolToText'/>
     <exports symbol='xmlDebugDumpAttr'/>
     <exports symbol='xmlDebugDumpAttrList'/>
     <exports symbol='xmlDebugDumpDTD'/>
     <exports symbol='xmlDebugDumpDocument'/>
     <exports symbol='xmlDebugDumpDocumentHead'/>
     <exports symbol='xmlDebugDumpEntities'/>
     <exports symbol='xmlDebugDumpNode'/>
     <exports symbol='xmlDebugDumpNodeList'/>
     <exports symbol='xmlDebugDumpOneNode'/>
     <exports symbol='xmlDebugDumpString'/>
     <exports symbol='xmlLsCountNode'/>
     <exports symbol='xmlLsOneNode'/>
     <exports symbol='xmlShell'/>
     <exports symbol='xmlShellBase'/>
     <exports symbol='xmlShellCat'/>
     <exports symbol='xmlShellCmd'/>
     <exports symbol='xmlShellCtxt'/>
     <exports symbol='xmlShellCtxtPtr'/>
     <exports symbol='xmlShellDir'/>
     <exports symbol='xmlShellDu'/>
     <exports symbol='xmlShellList'/>
     <exports symbol='xmlShellLoad'/>
     <exports symbol='xmlShellPrintNode'/>
     <exports symbol='xmlShellPrintXPathError'/>
     <exports symbol='xmlShellPrintXPathResult'/>
     <exports symbol='xmlShellPwd'/>
     <exports symbol='xmlShellReadlineFunc'/>
     <exports symbol='xmlShellSave'/>
     <exports symbol='xmlShellValidate'/>
     <exports symbol='xmlShellWrite'/>
    </file>
    <file name='xpointer'>
     <exports symbol='_xmlLocationSet'/>
     <exports symbol='xmlLocationSet'/>
     <exports symbol='xmlLocationSetPtr'/>
     <exports symbol='xmlXPtrBuildNodeList'/>
     <exports symbol='xmlXPtrEval'/>
     <exports symbol='xmlXPtrEvalRangePredicate'/>
     <exports symbol='xmlXPtrFreeLocationSet'/>
     <exports symbol='xmlXPtrLocationSetAdd'/>
     <exports symbol='xmlXPtrLocationSetCreate'/>
     <exports symbol='xmlXPtrLocationSetDel'/>
     <exports symbol='xmlXPtrLocationSetMerge'/>
     <exports symbol='xmlXPtrLocationSetRemove'/>
     <exports symbol='xmlXPtrNewCollapsedRange'/>
     <exports symbol='xmlXPtrNewContext'/>
     <exports symbol='xmlXPtrNewLocationSetNodeSet'/>
     <exports symbol='xmlXPtrNewLocationSetNodes'/>
     <exports symbol='xmlXPtrNewRange'/>
     <exports symbol='xmlXPtrNewRangeNodeObject'/>
     <exports symbol='xmlXPtrNewRangeNodePoint'/>
     <exports symbol='xmlXPtrNewRangeNodes'/>
     <exports symbol='xmlXPtrNewRangePointNode'/>
     <exports symbol='xmlXPtrNewRangePoints'/>
     <exports symbol='xmlXPtrRangeToFunction'/>
     <exports symbol='xmlXPtrWrapLocationSet'/>
    </file>
    <file name='SAX'>
     <exports symbol='attribute'/>
     <exports symbol='attributeDecl'/>
     <exports symbol='cdataBlock'/>
     <exports symbol='characters'/>
     <exports symbol='checkNamespace'/>
     <exports symbol='comment'/>
     <exports symbol='docbDefaultSAXHandlerInit'/>
     <exports symbol='elementDecl'/>
     <exports symbol='endDocument'/>
     <exports symbol='endElement'/>
     <exports symbol='entityDecl'/>
     <exports symbol='externalSubset'/>
     <exports symbol='getColumnNumber'/>
     <exports symbol='getEntity'/>
     <exports symbol='getLineNumber'/>
     <exports symbol='getNamespace'/>
     <exports symbol='getParameterEntity'/>
     <exports symbol='getPublicId'/>
     <exports symbol='getSystemId'/>
     <exports symbol='globalNamespace'/>
     <exports symbol='hasExternalSubset'/>
     <exports symbol='hasInternalSubset'/>
     <exports symbol='htmlDefaultSAXHandlerInit'/>
     <exports symbol='ignorableWhitespace'/>
     <exports symbol='initdocbDefaultSAXHandler'/>
     <exports symbol='inithtmlDefaultSAXHandler'/>
     <exports symbol='initxmlDefaultSAXHandler'/>
     <exports symbol='internalSubset'/>
     <exports symbol='isStandalone'/>
     <exports symbol='namespaceDecl'/>
     <exports symbol='notationDecl'/>
     <exports symbol='processingInstruction'/>
     <exports symbol='reference'/>
     <exports symbol='resolveEntity'/>
     <exports symbol='setDocumentLocator'/>
     <exports symbol='setNamespace'/>
     <exports symbol='startDocument'/>
     <exports symbol='startElement'/>
     <exports symbol='unparsedEntityDecl'/>
     <exports symbol='xmlDefaultSAXHandlerInit'/>
    </file>
    <file name='parserInternals'>
     <exports symbol='INPUT_CHUNK'/>
     <exports symbol='IS_BASECHAR'/>
     <exports symbol='IS_BLANK'/>
     <exports symbol='IS_CHAR'/>
     <exports symbol='IS_COMBINING'/>
     <exports symbol='IS_DIGIT'/>
     <exports symbol='IS_EXTENDER'/>
     <exports symbol='IS_IDEOGRAPHIC'/>
     <exports symbol='IS_LETTER'/>
     <exports symbol='IS_PUBIDCHAR'/>
     <exports symbol='MOVETO_ENDTAG'/>
     <exports symbol='MOVETO_STARTTAG'/>
     <exports symbol='SKIP_EOL'/>
     <exports symbol='XML_MAX_NAMELEN'/>
     <exports symbol='XML_SUBSTITUTE_BOTH'/>
     <exports symbol='XML_SUBSTITUTE_NONE'/>
     <exports symbol='XML_SUBSTITUTE_PEREF'/>
     <exports symbol='XML_SUBSTITUTE_REF'/>
     <exports symbol='htmlCreateFileParserCtxt'/>
     <exports symbol='htmlInitAutoClose'/>
     <exports symbol='inputPop'/>
     <exports symbol='inputPush'/>
     <exports symbol='namePop'/>
     <exports symbol='namePush'/>
     <exports symbol='nodePop'/>
     <exports symbol='nodePush'/>
     <exports symbol='xmlCheckLanguageID'/>
     <exports symbol='xmlCopyChar'/>
     <exports symbol='xmlCopyCharMultiByte'/>
     <exports symbol='xmlCreateEntityParserCtxt'/>
     <exports symbol='xmlCreateFileParserCtxt'/>
     <exports symbol='xmlCreateMemoryParserCtxt'/>
     <exports symbol='xmlCurrentChar'/>
     <exports symbol='xmlDecodeEntities'/>
     <exports symbol='xmlEntityReferenceFunc'/>
     <exports symbol='xmlFreeInputStream'/>
     <exports symbol='xmlHandleEntity'/>
     <exports symbol='xmlIsBaseChar'/>
     <exports symbol='xmlIsBlank'/>
     <exports symbol='xmlIsChar'/>
     <exports symbol='xmlIsCombining'/>
     <exports symbol='xmlIsDigit'/>
     <exports symbol='xmlIsExtender'/>
     <exports symbol='xmlIsIdeographic'/>
     <exports symbol='xmlIsLetter'/>
     <exports symbol='xmlIsPubidChar'/>
     <exports symbol='xmlNamespaceParseNCName'/>
     <exports symbol='xmlNamespaceParseNSDef'/>
     <exports symbol='xmlNamespaceParseQName'/>
     <exports symbol='xmlNewEntityInputStream'/>
     <exports symbol='xmlNewInputFromFile'/>
     <exports symbol='xmlNewInputStream'/>
     <exports symbol='xmlNewParserCtxt'/>
     <exports symbol='xmlNewStringInputStream'/>
     <exports symbol='xmlNextChar'/>
     <exports symbol='xmlParseAttValue'/>
     <exports symbol='xmlParseAttribute'/>
     <exports symbol='xmlParseAttributeListDecl'/>
     <exports symbol='xmlParseAttributeType'/>
     <exports symbol='xmlParseCDSect'/>
     <exports symbol='xmlParseCharData'/>
     <exports symbol='xmlParseCharRef'/>
     <exports symbol='xmlParseComment'/>
     <exports symbol='xmlParseContent'/>
     <exports symbol='xmlParseDefaultDecl'/>
     <exports symbol='xmlParseDocTypeDecl'/>
     <exports symbol='xmlParseElement'/>
     <exports symbol='xmlParseElementChildrenContentDecl'/>
     <exports symbol='xmlParseElementContentDecl'/>
     <exports symbol='xmlParseElementDecl'/>
     <exports symbol='xmlParseElementMixedContentDecl'/>
     <exports symbol='xmlParseEncName'/>
     <exports symbol='xmlParseEncodingDecl'/>
     <exports symbol='xmlParseEndTag'/>
     <exports symbol='xmlParseEntityDecl'/>
     <exports symbol='xmlParseEntityRef'/>
     <exports symbol='xmlParseEntityValue'/>
     <exports symbol='xmlParseEnumeratedType'/>
     <exports symbol='xmlParseEnumerationType'/>
     <exports symbol='xmlParseExternalID'/>
     <exports symbol='xmlParseExternalSubset'/>
     <exports symbol='xmlParseMarkupDecl'/>
     <exports symbol='xmlParseMisc'/>
     <exports symbol='xmlParseName'/>
     <exports symbol='xmlParseNamespace'/>
     <exports symbol='xmlParseNmtoken'/>
     <exports symbol='xmlParseNotationDecl'/>
     <exports symbol='xmlParseNotationType'/>
     <exports symbol='xmlParsePEReference'/>
     <exports symbol='xmlParsePI'/>
     <exports symbol='xmlParsePITarget'/>
     <exports symbol='xmlParsePubidLiteral'/>
     <exports symbol='xmlParseQuotedString'/>
     <exports symbol='xmlParseReference'/>
     <exports symbol='xmlParseSDDecl'/>
     <exports symbol='xmlParseStartTag'/>
     <exports symbol='xmlParseSystemLiteral'/>
     <exports symbol='xmlParseTextDecl'/>
     <exports symbol='xmlParseVersionInfo'/>
     <exports symbol='xmlParseVersionNum'/>
     <exports symbol='xmlParseXMLDecl'/>
     <exports symbol='xmlParserHandlePEReference'/>
     <exports symbol='xmlParserHandleReference'/>
     <exports symbol='xmlParserInputShrink'/>
     <exports symbol='xmlPopInput'/>
     <exports symbol='xmlPushInput'/>
     <exports symbol='xmlScanName'/>
     <exports symbol='xmlSetEntityReferenceFunc'/>
     <exports symbol='xmlSkipBlankChars'/>
     <exports symbol='xmlSplitQName'/>
     <exports symbol='xmlStringComment'/>
     <exports symbol='xmlStringCurrentChar'/>
     <exports symbol='xmlStringDecodeEntities'/>
     <exports symbol='xmlStringText'/>
     <exports symbol='xmlStringTextNoenc'/>
     <exports symbol='xmlSwitchEncoding'/>
     <exports symbol='xmlSwitchToEncoding'/>
    </file>
    <file name='c14n'>
     <exports symbol='xmlC14NDocDumpMemory'/>
     <exports symbol='xmlC14NDocSave'/>
     <exports symbol='xmlC14NDocSaveTo'/>
     <exports symbol='xmlC14NExecute'/>
     <exports symbol='xmlC14NIsVisibleCallback'/>
    </file>
    <file name='catalog'>
     <exports symbol='XML_CATALOGS_NAMESPACE'/>
     <exports symbol='XML_CATALOG_PI'/>
     <exports symbol='XML_CATA_ALLOW_ALL'/>
     <exports symbol='XML_CATA_ALLOW_DOCUMENT'/>
     <exports symbol='XML_CATA_ALLOW_GLOBAL'/>
     <exports symbol='XML_CATA_ALLOW_NONE'/>
     <exports symbol='XML_CATA_PREFER_NONE'/>
     <exports symbol='XML_CATA_PREFER_PUBLIC'/>
     <exports symbol='XML_CATA_PREFER_SYSTEM'/>
     <exports symbol='xmlACatalogAdd'/>
     <exports symbol='xmlACatalogDump'/>
     <exports symbol='xmlACatalogRemove'/>
     <exports symbol='xmlACatalogResolve'/>
     <exports symbol='xmlACatalogResolvePublic'/>
     <exports symbol='xmlACatalogResolveSystem'/>
     <exports symbol='xmlACatalogResolveURI'/>
     <exports symbol='xmlCatalog'/>
     <exports symbol='xmlCatalogAdd'/>
     <exports symbol='xmlCatalogAddLocal'/>
     <exports symbol='xmlCatalogAllow'/>
     <exports symbol='xmlCatalogCleanup'/>
     <exports symbol='xmlCatalogConvert'/>
     <exports symbol='xmlCatalogDump'/>
     <exports symbol='xmlCatalogFreeLocal'/>
     <exports symbol='xmlCatalogGetDefaults'/>
     <exports symbol='xmlCatalogGetPublic'/>
     <exports symbol='xmlCatalogGetSystem'/>
     <exports symbol='xmlCatalogIsEmpty'/>
     <exports symbol='xmlCatalogLocalResolve'/>
     <exports symbol='xmlCatalogLocalResolveURI'/>
     <exports symbol='xmlCatalogPrefer'/>
     <exports symbol='xmlCatalogPtr'/>
     <exports symbol='xmlCatalogRemove'/>
     <exports symbol='xmlCatalogResolve'/>
     <exports symbol='xmlCatalogResolvePublic'/>
     <exports symbol='xmlCatalogResolveSystem'/>
     <exports symbol='xmlCatalogResolveURI'/>
     <exports symbol='xmlCatalogSetDebug'/>
     <exports symbol='xmlCatalogSetDefaultPrefer'/>
     <exports symbol='xmlCatalogSetDefaults'/>
     <exports symbol='xmlConvertSGMLCatalog'/>
     <exports symbol='xmlFreeCatalog'/>
     <exports symbol='xmlInitializeCatalog'/>
     <exports symbol='xmlLoadACatalog'/>
     <exports symbol='xmlLoadCatalog'/>
     <exports symbol='xmlLoadCatalogs'/>
     <exports symbol='xmlLoadSGMLSuperCatalog'/>
     <exports symbol='xmlNewCatalog'/>
     <exports symbol='xmlParseCatalogFile'/>
    </file>
    <file name='xpathInternals'>
     <exports symbol='CAST_TO_BOOLEAN'/>
     <exports symbol='CAST_TO_NUMBER'/>
     <exports symbol='CAST_TO_STRING'/>
     <exports symbol='CHECK_ARITY'/>
     <exports symbol='CHECK_ERROR'/>
     <exports symbol='CHECK_ERROR0'/>
     <exports symbol='CHECK_TYPE'/>
     <exports symbol='CHECK_TYPE0'/>
     <exports symbol='XP_ERROR'/>
     <exports symbol='XP_ERROR0'/>
     <exports symbol='valuePop'/>
     <exports symbol='valuePush'/>
     <exports symbol='xmlXPathAddValues'/>
     <exports symbol='xmlXPathBooleanFunction'/>
     <exports symbol='xmlXPathCeilingFunction'/>
     <exports symbol='xmlXPathCheckError'/>
     <exports symbol='xmlXPathCompareValues'/>
     <exports symbol='xmlXPathConcatFunction'/>
     <exports symbol='xmlXPathContainsFunction'/>
     <exports symbol='xmlXPathCountFunction'/>
     <exports symbol='xmlXPathDebugDumpCompExpr'/>
     <exports symbol='xmlXPathDebugDumpObject'/>
     <exports symbol='xmlXPathDifference'/>
     <exports symbol='xmlXPathDistinct'/>
     <exports symbol='xmlXPathDistinctSorted'/>
     <exports symbol='xmlXPathDivValues'/>
     <exports symbol='xmlXPathEmptyNodeSet'/>
     <exports symbol='xmlXPathEqualValues'/>
     <exports symbol='xmlXPathEvalExpr'/>
     <exports symbol='xmlXPathEvaluatePredicateResult'/>
     <exports symbol='xmlXPathFalseFunction'/>
     <exports symbol='xmlXPathFloorFunction'/>
     <exports symbol='xmlXPathFreeParserContext'/>
     <exports symbol='xmlXPathFuncLookupFunc'/>
     <exports symbol='xmlXPathFunctionLookup'/>
     <exports symbol='xmlXPathFunctionLookupNS'/>
     <exports symbol='xmlXPathGetContextNode'/>
     <exports symbol='xmlXPathGetDocument'/>
     <exports symbol='xmlXPathGetError'/>
     <exports symbol='xmlXPathHasSameNodes'/>
     <exports symbol='xmlXPathIdFunction'/>
     <exports symbol='xmlXPathIntersection'/>
     <exports symbol='xmlXPathIsNodeType'/>
     <exports symbol='xmlXPathLangFunction'/>
     <exports symbol='xmlXPathLastFunction'/>
     <exports symbol='xmlXPathLeading'/>
     <exports symbol='xmlXPathLeadingSorted'/>
     <exports symbol='xmlXPathLocalNameFunction'/>
     <exports symbol='xmlXPathModValues'/>
     <exports symbol='xmlXPathMultValues'/>
     <exports symbol='xmlXPathNamespaceURIFunction'/>
     <exports symbol='xmlXPathNewBoolean'/>
     <exports symbol='xmlXPathNewCString'/>
     <exports symbol='xmlXPathNewFloat'/>
     <exports symbol='xmlXPathNewNodeSet'/>
     <exports symbol='xmlXPathNewNodeSetList'/>
     <exports symbol='xmlXPathNewParserContext'/>
     <exports symbol='xmlXPathNewString'/>
     <exports symbol='xmlXPathNewValueTree'/>
     <exports symbol='xmlXPathNextAncestor'/>
     <exports symbol='xmlXPathNextAncestorOrSelf'/>
     <exports symbol='xmlXPathNextAttribute'/>
     <exports symbol='xmlXPathNextChild'/>
     <exports symbol='xmlXPathNextDescendant'/>
     <exports symbol='xmlXPathNextDescendantOrSelf'/>
     <exports symbol='xmlXPathNextFollowing'/>
     <exports symbol='xmlXPathNextFollowingSibling'/>
     <exports symbol='xmlXPathNextNamespace'/>
     <exports symbol='xmlXPathNextParent'/>
     <exports symbol='xmlXPathNextPreceding'/>
     <exports symbol='xmlXPathNextPrecedingSibling'/>
     <exports symbol='xmlXPathNextSelf'/>
     <exports symbol='xmlXPathNodeLeading'/>
     <exports symbol='xmlXPathNodeLeadingSorted'/>
     <exports symbol='xmlXPathNodeSetAdd'/>
     <exports symbol='xmlXPathNodeSetAddNs'/>
     <exports symbol='xmlXPathNodeSetAddUnique'/>
     <exports symbol='xmlXPathNodeSetContains'/>
     <exports symbol='xmlXPathNodeSetDel'/>
     <exports symbol='xmlXPathNodeSetFreeNs'/>
     <exports symbol='xmlXPathNodeSetMerge'/>
     <exports symbol='xmlXPathNodeSetRemove'/>
     <exports symbol='xmlXPathNodeSetSort'/>
     <exports symbol='xmlXPathNodeTrailing'/>
     <exports symbol='xmlXPathNodeTrailingSorted'/>
     <exports symbol='xmlXPathNormalizeFunction'/>
     <exports symbol='xmlXPathNotEqualValues'/>
     <exports symbol='xmlXPathNotFunction'/>
     <exports symbol='xmlXPathNsLookup'/>
     <exports symbol='xmlXPathNumberFunction'/>
     <exports symbol='xmlXPathParseNCName'/>
     <exports symbol='xmlXPathParseName'/>
     <exports symbol='xmlXPathPopBoolean'/>
     <exports symbol='xmlXPathPopExternal'/>
     <exports symbol='xmlXPathPopNodeSet'/>
     <exports symbol='xmlXPathPopNumber'/>
     <exports symbol='xmlXPathPopString'/>
     <exports symbol='xmlXPathPositionFunction'/>
     <exports symbol='xmlXPathRegisterAllFunctions'/>
     <exports symbol='xmlXPathRegisterFunc'/>
     <exports symbol='xmlXPathRegisterFuncLookup'/>
     <exports symbol='xmlXPathRegisterFuncNS'/>
     <exports symbol='xmlXPathRegisterNs'/>
     <exports symbol='xmlXPathRegisterVariable'/>
     <exports symbol='xmlXPathRegisterVariableLookup'/>
     <exports symbol='xmlXPathRegisterVariableNS'/>
     <exports symbol='xmlXPathRegisteredFuncsCleanup'/>
     <exports symbol='xmlXPathRegisteredNsCleanup'/>
     <exports symbol='xmlXPathRegisteredVariablesCleanup'/>
     <exports symbol='xmlXPathReturnBoolean'/>
     <exports symbol='xmlXPathReturnEmptyNodeSet'/>
     <exports symbol='xmlXPathReturnEmptyString'/>
     <exports symbol='xmlXPathReturnExternal'/>
     <exports symbol='xmlXPathReturnFalse'/>
     <exports symbol='xmlXPathReturnNodeSet'/>
     <exports symbol='xmlXPathReturnNumber'/>
     <exports symbol='xmlXPathReturnString'/>
     <exports symbol='xmlXPathReturnTrue'/>
     <exports symbol='xmlXPathRoot'/>
     <exports symbol='xmlXPathRoundFunction'/>
     <exports symbol='xmlXPathSetArityError'/>
     <exports symbol='xmlXPathSetError'/>
     <exports symbol='xmlXPathSetTypeError'/>
     <exports symbol='xmlXPathStackIsExternal'/>
     <exports symbol='xmlXPathStackIsNodeSet'/>
     <exports symbol='xmlXPathStartsWithFunction'/>
     <exports symbol='xmlXPathStringEvalNumber'/>
     <exports symbol='xmlXPathStringFunction'/>
     <exports symbol='xmlXPathStringLengthFunction'/>
     <exports symbol='xmlXPathSubValues'/>
     <exports symbol='xmlXPathSubstringAfterFunction'/>
     <exports symbol='xmlXPathSubstringBeforeFunction'/>
     <exports symbol='xmlXPathSubstringFunction'/>
     <exports symbol='xmlXPathSumFunction'/>
     <exports symbol='xmlXPathTrailing'/>
     <exports symbol='xmlXPathTrailingSorted'/>
     <exports symbol='xmlXPathTranslateFunction'/>
     <exports symbol='xmlXPathTrueFunction'/>
     <exports symbol='xmlXPathValueFlipSign'/>
     <exports symbol='xmlXPathVariableLookup'/>
     <exports symbol='xmlXPathVariableLookupFunc'/>
     <exports symbol='xmlXPathVariableLookupNS'/>
     <exports symbol='xmlXPathWrapCString'/>
     <exports symbol='xmlXPathWrapExternal'/>
     <exports symbol='xmlXPathWrapNodeSet'/>
     <exports symbol='xmlXPathWrapString'/>
     <exports symbol='xmlXPatherror'/>
    </file>
    <file name='xmlautomata'>
     <exports symbol='xmlAutomata'/>
     <exports symbol='xmlAutomataCompile'/>
     <exports symbol='xmlAutomataGetInitState'/>
     <exports symbol='xmlAutomataIsDeterminist'/>
     <exports symbol='xmlAutomataNewAllTrans'/>
     <exports symbol='xmlAutomataNewCountTrans'/>
     <exports symbol='xmlAutomataNewCountedTrans'/>
     <exports symbol='xmlAutomataNewCounter'/>
     <exports symbol='xmlAutomataNewCounterTrans'/>
     <exports symbol='xmlAutomataNewEpsilon'/>
     <exports symbol='xmlAutomataNewOnceTrans'/>
     <exports symbol='xmlAutomataNewState'/>
     <exports symbol='xmlAutomataNewTransition'/>
     <exports symbol='xmlAutomataPtr'/>
     <exports symbol='xmlAutomataSetFinalState'/>
     <exports symbol='xmlAutomataState'/>
     <exports symbol='xmlAutomataStatePtr'/>
     <exports symbol='xmlFreeAutomata'/>
     <exports symbol='xmlNewAutomata'/>
    </file>
    <file name='HTMLtree'>
     <exports symbol='HTML_COMMENT_NODE'/>
     <exports symbol='HTML_ENTITY_REF_NODE'/>
     <exports symbol='HTML_PI_NODE'/>
     <exports symbol='HTML_PRESERVE_NODE'/>
     <exports symbol='HTML_TEXT_NODE'/>
     <exports symbol='htmlDocContentDumpFormatOutput'/>
     <exports symbol='htmlDocContentDumpOutput'/>
     <exports symbol='htmlDocDump'/>
     <exports symbol='htmlDocDumpMemory'/>
     <exports symbol='htmlGetMetaEncoding'/>
     <exports symbol='htmlIsBooleanAttr'/>
     <exports symbol='htmlNewDoc'/>
     <exports symbol='htmlNewDocNoDtD'/>
     <exports symbol='htmlNodeDump'/>
     <exports symbol='htmlNodeDumpFile'/>
     <exports symbol='htmlNodeDumpFileFormat'/>
     <exports symbol='htmlNodeDumpFormatOutput'/>
     <exports symbol='htmlNodeDumpOutput'/>
     <exports symbol='htmlSaveFile'/>
     <exports symbol='htmlSaveFileEnc'/>
     <exports symbol='htmlSaveFileFormat'/>
     <exports symbol='htmlSetMetaEncoding'/>
    </file>
    <file name='nanoftp'>
     <exports symbol='ftpDataCallback'/>
     <exports symbol='ftpListCallback'/>
     <exports symbol='xmlNanoFTPCheckResponse'/>
     <exports symbol='xmlNanoFTPCleanup'/>
     <exports symbol='xmlNanoFTPClose'/>
     <exports symbol='xmlNanoFTPCloseConnection'/>
     <exports symbol='xmlNanoFTPConnect'/>
     <exports symbol='xmlNanoFTPConnectTo'/>
     <exports symbol='xmlNanoFTPCwd'/>
     <exports symbol='xmlNanoFTPFreeCtxt'/>
     <exports symbol='xmlNanoFTPGet'/>
     <exports symbol='xmlNanoFTPGetConnection'/>
     <exports symbol='xmlNanoFTPGetResponse'/>
     <exports symbol='xmlNanoFTPGetSocket'/>
     <exports symbol='xmlNanoFTPInit'/>
     <exports symbol='xmlNanoFTPList'/>
     <exports symbol='xmlNanoFTPNewCtxt'/>
     <exports symbol='xmlNanoFTPOpen'/>
     <exports symbol='xmlNanoFTPProxy'/>
     <exports symbol='xmlNanoFTPQuit'/>
     <exports symbol='xmlNanoFTPRead'/>
     <exports symbol='xmlNanoFTPScanProxy'/>
     <exports symbol='xmlNanoFTPUpdateURL'/>
    </file>
    <file name='DOCBparser'>
     <exports symbol='docbCreateFileParserCtxt'/>
     <exports symbol='docbCreatePushParserCtxt'/>
     <exports symbol='docbDocPtr'/>
     <exports symbol='docbEncodeEntities'/>
     <exports symbol='docbFreeParserCtxt'/>
     <exports symbol='docbNodePtr'/>
     <exports symbol='docbParseChunk'/>
     <exports symbol='docbParseDoc'/>
     <exports symbol='docbParseDocument'/>
     <exports symbol='docbParseFile'/>
     <exports symbol='docbParserCtxt'/>
     <exports symbol='docbParserCtxtPtr'/>
     <exports symbol='docbParserInput'/>
     <exports symbol='docbParserInputPtr'/>
     <exports symbol='docbParserNodeInfo'/>
     <exports symbol='docbSAXHandler'/>
     <exports symbol='docbSAXHandlerPtr'/>
     <exports symbol='docbSAXParseDoc'/>
     <exports symbol='docbSAXParseFile'/>
    </file>
    <file name='xpath'>
     <exports symbol='XPATH_BOOLEAN'/>
     <exports symbol='XPATH_ENCODING_ERROR'/>
     <exports symbol='XPATH_EXPRESSION_OK'/>
     <exports symbol='XPATH_EXPR_ERROR'/>
     <exports symbol='XPATH_INVALID_ARITY'/>
     <exports symbol='XPATH_INVALID_CHAR_ERROR'/>
     <exports symbol='XPATH_INVALID_CTXT_POSITION'/>
     <exports symbol='XPATH_INVALID_CTXT_SIZE'/>
     <exports symbol='XPATH_INVALID_OPERAND'/>
     <exports symbol='XPATH_INVALID_PREDICATE_ERROR'/>
     <exports symbol='XPATH_INVALID_TYPE'/>
     <exports symbol='XPATH_LOCATIONSET'/>
     <exports symbol='XPATH_MEMORY_ERROR'/>
     <exports symbol='XPATH_NODESET'/>
     <exports symbol='XPATH_NUMBER'/>
     <exports symbol='XPATH_NUMBER_ERROR'/>
     <exports symbol='XPATH_POINT'/>
     <exports symbol='XPATH_RANGE'/>
     <exports symbol='XPATH_START_LITERAL_ERROR'/>
     <exports symbol='XPATH_STRING'/>
     <exports symbol='XPATH_UNCLOSED_ERROR'/>
     <exports symbol='XPATH_UNDEFINED'/>
     <exports symbol='XPATH_UNDEF_PREFIX_ERROR'/>
     <exports symbol='XPATH_UNDEF_VARIABLE_ERROR'/>
     <exports symbol='XPATH_UNFINISHED_LITERAL_ERROR'/>
     <exports symbol='XPATH_UNKNOWN_FUNC_ERROR'/>
     <exports symbol='XPATH_USERS'/>
     <exports symbol='XPATH_VARIABLE_REF_ERROR'/>
     <exports symbol='XPATH_XSLT_TREE'/>
     <exports symbol='XPTR_RESOURCE_ERROR'/>
     <exports symbol='XPTR_SUB_RESOURCE_ERROR'/>
     <exports symbol='XPTR_SYNTAX_ERROR'/>
     <exports symbol='_xmlNodeSet'/>
     <exports symbol='_xmlXPathAxis'/>
     <exports symbol='_xmlXPathContext'/>
     <exports symbol='_xmlXPathFunct'/>
     <exports symbol='_xmlXPathObject'/>
     <exports symbol='_xmlXPathParserContext'/>
     <exports symbol='_xmlXPathType'/>
     <exports symbol='_xmlXPathVariable'/>
     <exports symbol='xmlNodeSet'/>
     <exports symbol='xmlNodeSetPtr'/>
     <exports symbol='xmlXPathAxis'/>
     <exports symbol='xmlXPathAxisFunc'/>
     <exports symbol='xmlXPathAxisPtr'/>
     <exports symbol='xmlXPathCastBooleanToNumber'/>
     <exports symbol='xmlXPathCastBooleanToString'/>
     <exports symbol='xmlXPathCastNodeSetToBoolean'/>
     <exports symbol='xmlXPathCastNodeSetToNumber'/>
     <exports symbol='xmlXPathCastNodeSetToString'/>
     <exports symbol='xmlXPathCastNodeToNumber'/>
     <exports symbol='xmlXPathCastNodeToString'/>
     <exports symbol='xmlXPathCastNumberToBoolean'/>
     <exports symbol='xmlXPathCastNumberToString'/>
     <exports symbol='xmlXPathCastStringToBoolean'/>
     <exports symbol='xmlXPathCastStringToNumber'/>
     <exports symbol='xmlXPathCastToBoolean'/>
     <exports symbol='xmlXPathCastToNumber'/>
     <exports symbol='xmlXPathCastToString'/>
     <exports symbol='xmlXPathCmpNodes'/>
     <exports symbol='xmlXPathCompExpr'/>
     <exports symbol='xmlXPathCompExprPtr'/>
     <exports symbol='xmlXPathCompile'/>
     <exports symbol='xmlXPathCompiledEval'/>
     <exports symbol='xmlXPathContext'/>
     <exports symbol='xmlXPathContextPtr'/>
     <exports symbol='xmlXPathConvertBoolean'/>
     <exports symbol='xmlXPathConvertFunc'/>
     <exports symbol='xmlXPathConvertNumber'/>
     <exports symbol='xmlXPathConvertString'/>
     <exports symbol='xmlXPathError'/>
     <exports symbol='xmlXPathEval'/>
     <exports symbol='xmlXPathEvalExpression'/>
     <exports symbol='xmlXPathEvalFunc'/>
     <exports symbol='xmlXPathEvalPredicate'/>
     <exports symbol='xmlXPathFreeCompExpr'/>
     <exports symbol='xmlXPathFreeContext'/>
     <exports symbol='xmlXPathFreeNodeSet'/>
     <exports symbol='xmlXPathFreeNodeSetList'/>
     <exports symbol='xmlXPathFreeObject'/>
     <exports symbol='xmlXPathFuncPtr'/>
     <exports symbol='xmlXPathFunct'/>
     <exports symbol='xmlXPathFunction'/>
     <exports symbol='xmlXPathInit'/>
     <exports symbol='xmlXPathIsInf'/>
     <exports symbol='xmlXPathIsNaN'/>
     <exports symbol='xmlXPathNAN'/>
     <exports symbol='xmlXPathNINF'/>
     <exports symbol='xmlXPathNewContext'/>
     <exports symbol='xmlXPathNodeSetCreate'/>
     <exports symbol='xmlXPathNodeSetGetLength'/>
     <exports symbol='xmlXPathNodeSetIsEmpty'/>
     <exports symbol='xmlXPathNodeSetItem'/>
     <exports symbol='xmlXPathObject'/>
     <exports symbol='xmlXPathObjectCopy'/>
     <exports symbol='xmlXPathObjectPtr'/>
     <exports symbol='xmlXPathObjectType'/>
     <exports symbol='xmlXPathPINF'/>
     <exports symbol='xmlXPathParserContext'/>
     <exports symbol='xmlXPathParserContextPtr'/>
     <exports symbol='xmlXPathType'/>
     <exports symbol='xmlXPathTypePtr'/>
     <exports symbol='xmlXPathVariable'/>
     <exports symbol='xmlXPathVariablePtr'/>
    </file>
    <file name='xlink'>
     <exports symbol='XLINK_ACTUATE_AUTO'/>
     <exports symbol='XLINK_ACTUATE_NONE'/>
     <exports symbol='XLINK_ACTUATE_ONREQUEST'/>
     <exports symbol='XLINK_SHOW_EMBED'/>
     <exports symbol='XLINK_SHOW_NEW'/>
     <exports symbol='XLINK_SHOW_NONE'/>
     <exports symbol='XLINK_SHOW_REPLACE'/>
     <exports symbol='XLINK_TYPE_EXTENDED'/>
     <exports symbol='XLINK_TYPE_EXTENDED_SET'/>
     <exports symbol='XLINK_TYPE_NONE'/>
     <exports symbol='XLINK_TYPE_SIMPLE'/>
     <exports symbol='_xlinkHandler'/>
     <exports symbol='xlinkActuate'/>
     <exports symbol='xlinkExtendedLinkFunk'/>
     <exports symbol='xlinkExtendedLinkSetFunk'/>
     <exports symbol='xlinkGetDefaultDetect'/>
     <exports symbol='xlinkGetDefaultHandler'/>
     <exports symbol='xlinkHRef'/>
     <exports symbol='xlinkHandler'/>
     <exports symbol='xlinkHandlerPtr'/>
     <exports symbol='xlinkIsLink'/>
     <exports symbol='xlinkNodeDetectFunc'/>
     <exports symbol='xlinkRole'/>
     <exports symbol='xlinkSetDefaultDetect'/>
     <exports symbol='xlinkSetDefaultHandler'/>
     <exports symbol='xlinkShow'/>
     <exports symbol='xlinkSimpleLinkFunk'/>
     <exports symbol='xlinkTitle'/>
     <exports symbol='xlinkType'/>
    </file>
    <file name='entities'>
     <exports symbol='XML_EXTERNAL_GENERAL_PARSED_ENTITY'/>
     <exports symbol='XML_EXTERNAL_GENERAL_UNPARSED_ENTITY'/>
     <exports symbol='XML_EXTERNAL_PARAMETER_ENTITY'/>
     <exports symbol='XML_INTERNAL_GENERAL_ENTITY'/>
     <exports symbol='XML_INTERNAL_PARAMETER_ENTITY'/>
     <exports symbol='XML_INTERNAL_PREDEFINED_ENTITY'/>
     <exports symbol='_xmlEntity'/>
     <exports symbol='xmlAddDocEntity'/>
     <exports symbol='xmlAddDtdEntity'/>
     <exports symbol='xmlCleanupPredefinedEntities'/>
     <exports symbol='xmlCopyEntitiesTable'/>
     <exports symbol='xmlCreateEntitiesTable'/>
     <exports symbol='xmlDumpEntitiesTable'/>
     <exports symbol='xmlDumpEntityDecl'/>
     <exports symbol='xmlEncodeEntities'/>
     <exports symbol='xmlEncodeEntitiesReentrant'/>
     <exports symbol='xmlEncodeSpecialChars'/>
     <exports symbol='xmlEntitiesTable'/>
     <exports symbol='xmlEntitiesTablePtr'/>
     <exports symbol='xmlEntityType'/>
     <exports symbol='xmlFreeEntitiesTable'/>
     <exports symbol='xmlGetDocEntity'/>
     <exports symbol='xmlGetDtdEntity'/>
     <exports symbol='xmlGetParameterEntity'/>
     <exports symbol='xmlGetPredefinedEntity'/>
     <exports symbol='xmlInitializePredefinedEntities'/>
    </file>
    <file name='xinclude'>
     <exports symbol='xmlXIncludeProcess'/>
    </file>
    <file name='list'>
     <exports symbol='xmlLink'/>
     <exports symbol='xmlLinkGetData'/>
     <exports symbol='xmlLinkPtr'/>
     <exports symbol='xmlList'/>
     <exports symbol='xmlListAppend'/>
     <exports symbol='xmlListClear'/>
     <exports symbol='xmlListCopy'/>
     <exports symbol='xmlListCreate'/>
     <exports symbol='xmlListDataCompare'/>
     <exports symbol='xmlListDeallocator'/>
     <exports symbol='xmlListDelete'/>
     <exports symbol='xmlListDup'/>
     <exports symbol='xmlListEmpty'/>
     <exports symbol='xmlListEnd'/>
     <exports symbol='xmlListFront'/>
     <exports symbol='xmlListInsert'/>
     <exports symbol='xmlListMerge'/>
     <exports symbol='xmlListPopBack'/>
     <exports symbol='xmlListPopFront'/>
     <exports symbol='xmlListPtr'/>
     <exports symbol='xmlListPushBack'/>
     <exports symbol='xmlListPushFront'/>
     <exports symbol='xmlListRemoveAll'/>
     <exports symbol='xmlListRemoveFirst'/>
     <exports symbol='xmlListRemoveLast'/>
     <exports symbol='xmlListReverse'/>
     <exports symbol='xmlListReverseSearch'/>
     <exports symbol='xmlListReverseWalk'/>
     <exports symbol='xmlListSearch'/>
     <exports symbol='xmlListSize'/>
     <exports symbol='xmlListSort'/>
     <exports symbol='xmlListWalk'/>
     <exports symbol='xmlListWalker'/>
    </file>
    <file name='xmlmemory'>
     <exports symbol='DEBUG_MEMORY'/>
     <exports symbol='_DEBUG_MEMORY_ALLOC_'/>
     <exports symbol='xmlFreeFunc'/>
     <exports symbol='xmlInitMemory'/>
     <exports symbol='xmlMalloc'/>
     <exports symbol='xmlMallocFunc'/>
     <exports symbol='xmlMallocLoc'/>
     <exports symbol='xmlMemDisplay'/>
     <exports symbol='xmlMemFree'/>
     <exports symbol='xmlMemGet'/>
     <exports symbol='xmlMemMalloc'/>
     <exports symbol='xmlMemRealloc'/>
     <exports symbol='xmlMemSetup'/>
     <exports symbol='xmlMemShow'/>
     <exports symbol='xmlMemStrdup'/>
     <exports symbol='xmlMemStrdupLoc'/>
     <exports symbol='xmlMemUsed'/>
     <exports symbol='xmlMemoryDump'/>
     <exports symbol='xmlMemoryStrdup'/>
     <exports symbol='xmlRealloc'/>
     <exports symbol='xmlReallocFunc'/>
     <exports symbol='xmlReallocLoc'/>
     <exports symbol='xmlStrdupFunc'/>
    </file>
    <file name='xmlIO'>
     <exports symbol='_xmlOutputBuffer'/>
     <exports symbol='_xmlParserInputBuffer'/>
     <exports symbol='xmlAllocOutputBuffer'/>
     <exports symbol='xmlAllocParserInputBuffer'/>
     <exports symbol='xmlCheckFilename'/>
     <exports symbol='xmlCleanupInputCallbacks'/>
     <exports symbol='xmlCleanupOutputCallbacks'/>
     <exports symbol='xmlFileClose'/>
     <exports symbol='xmlFileMatch'/>
     <exports symbol='xmlFileOpen'/>
     <exports symbol='xmlFileRead'/>
     <exports symbol='xmlFreeParserInputBuffer'/>
     <exports symbol='xmlIOFTPClose'/>
     <exports symbol='xmlIOFTPMatch'/>
     <exports symbol='xmlIOFTPOpen'/>
     <exports symbol='xmlIOFTPRead'/>
     <exports symbol='xmlIOHTTPClose'/>
     <exports symbol='xmlIOHTTPMatch'/>
     <exports symbol='xmlIOHTTPOpen'/>
     <exports symbol='xmlIOHTTPOpenW'/>
     <exports symbol='xmlIOHTTPRead'/>
     <exports symbol='xmlInputCloseCallback'/>
     <exports symbol='xmlInputMatchCallback'/>
     <exports symbol='xmlInputOpenCallback'/>
     <exports symbol='xmlInputReadCallback'/>
     <exports symbol='xmlNoNetExternalEntityLoader'/>
     <exports symbol='xmlNormalizeWindowsPath'/>
     <exports symbol='xmlOutputBufferClose'/>
     <exports symbol='xmlOutputBufferCreateFd'/>
     <exports symbol='xmlOutputBufferCreateFile'/>
     <exports symbol='xmlOutputBufferCreateFilename'/>
     <exports symbol='xmlOutputBufferCreateIO'/>
     <exports symbol='xmlOutputBufferFlush'/>
     <exports symbol='xmlOutputBufferWrite'/>
     <exports symbol='xmlOutputBufferWriteString'/>
     <exports symbol='xmlOutputCloseCallback'/>
     <exports symbol='xmlOutputMatchCallback'/>
     <exports symbol='xmlOutputOpenCallback'/>
     <exports symbol='xmlOutputWriteCallback'/>
     <exports symbol='xmlParserGetDirectory'/>
     <exports symbol='xmlParserInputBufferCreateFd'/>
     <exports symbol='xmlParserInputBufferCreateFile'/>
     <exports symbol='xmlParserInputBufferCreateFilename'/>
     <exports symbol='xmlParserInputBufferCreateIO'/>
     <exports symbol='xmlParserInputBufferCreateMem'/>
     <exports symbol='xmlParserInputBufferGrow'/>
     <exports symbol='xmlParserInputBufferPush'/>
     <exports symbol='xmlParserInputBufferRead'/>
     <exports symbol='xmlRegisterDefaultInputCallbacks'/>
     <exports symbol='xmlRegisterDefaultOutputCallbacks'/>
     <exports symbol='xmlRegisterHTTPPostCallbacks'/>
     <exports symbol='xmlRegisterInputCallbacks'/>
     <exports symbol='xmlRegisterOutputCallbacks'/>
    </file>
    <file name='xmlversion'>
     <exports symbol='ATTRIBUTE_UNUSED'/>
     <exports symbol='DEBUG_MEMORY_LOCATION'/>
     <exports symbol='LIBXML_AUTOMATA_ENABLED'/>
     <exports symbol='LIBXML_C14N_ENABLED'/>
     <exports symbol='LIBXML_CATALOG_ENABLED'/>
     <exports symbol='LIBXML_DEBUG_ENABLED'/>
     <exports symbol='LIBXML_DLL_IMPORT'/>
     <exports symbol='LIBXML_DOCB_ENABLED'/>
     <exports symbol='LIBXML_DOTTED_VERSION'/>
     <exports symbol='LIBXML_FTP_ENABLED'/>
     <exports symbol='LIBXML_HTML_ENABLED'/>
     <exports symbol='LIBXML_HTTP_ENABLED'/>
     <exports symbol='LIBXML_ICONV_ENABLED'/>
     <exports symbol='LIBXML_REGEXP_ENABLED'/>
     <exports symbol='LIBXML_SCHEMAS_ENABLED'/>
     <exports symbol='LIBXML_TEST_VERSION'/>
     <exports symbol='LIBXML_THREAD_ENABLED'/>
     <exports symbol='LIBXML_UNICODE_ENABLED'/>
     <exports symbol='LIBXML_VERSION'/>
     <exports symbol='LIBXML_VERSION_STRING'/>
     <exports symbol='LIBXML_XINCLUDE_ENABLED'/>
     <exports symbol='LIBXML_XPATH_ENABLED'/>
     <exports symbol='LIBXML_XPTR_ENABLED'/>
     <exports symbol='WITHOUT_TRIO'/>
     <exports symbol='WITH_TRIO'/>
     <exports symbol='xmlCheckVersion'/>
    </file>
    <file name='valid'>
     <exports symbol='_xmlValidCtxt'/>
     <exports symbol='xmlAddAttributeDecl'/>
     <exports symbol='xmlAddElementDecl'/>
     <exports symbol='xmlAddID'/>
     <exports symbol='xmlAddNotationDecl'/>
     <exports symbol='xmlAddRef'/>
     <exports symbol='xmlAttributeTable'/>
     <exports symbol='xmlAttributeTablePtr'/>
     <exports symbol='xmlCopyAttributeTable'/>
     <exports symbol='xmlCopyElementContent'/>
     <exports symbol='xmlCopyElementTable'/>
     <exports symbol='xmlCopyEnumeration'/>
     <exports symbol='xmlCopyNotationTable'/>
     <exports symbol='xmlCreateEnumeration'/>
     <exports symbol='xmlDumpAttributeDecl'/>
     <exports symbol='xmlDumpAttributeTable'/>
     <exports symbol='xmlDumpElementDecl'/>
     <exports symbol='xmlDumpElementTable'/>
     <exports symbol='xmlDumpNotationDecl'/>
     <exports symbol='xmlDumpNotationTable'/>
     <exports symbol='xmlElementTable'/>
     <exports symbol='xmlElementTablePtr'/>
     <exports symbol='xmlFreeAttributeTable'/>
     <exports symbol='xmlFreeElementContent'/>
     <exports symbol='xmlFreeElementTable'/>
     <exports symbol='xmlFreeEnumeration'/>
     <exports symbol='xmlFreeIDTable'/>
     <exports symbol='xmlFreeNotationTable'/>
     <exports symbol='xmlFreeRefTable'/>
     <exports symbol='xmlGetDtdAttrDesc'/>
     <exports symbol='xmlGetDtdElementDesc'/>
     <exports symbol='xmlGetDtdNotationDesc'/>
     <exports symbol='xmlGetDtdQAttrDesc'/>
     <exports symbol='xmlGetDtdQElementDesc'/>
     <exports symbol='xmlGetID'/>
     <exports symbol='xmlGetRefs'/>
     <exports symbol='xmlIDTable'/>
     <exports symbol='xmlIDTablePtr'/>
     <exports symbol='xmlIsID'/>
     <exports symbol='xmlIsMixedElement'/>
     <exports symbol='xmlIsRef'/>
     <exports symbol='xmlNewElementContent'/>
     <exports symbol='xmlNotationTable'/>
     <exports symbol='xmlNotationTablePtr'/>
     <exports symbol='xmlRefTable'/>
     <exports symbol='xmlRefTablePtr'/>
     <exports symbol='xmlRemoveID'/>
     <exports symbol='xmlRemoveRef'/>
     <exports symbol='xmlSnprintfElementContent'/>
     <exports symbol='xmlSplitQName2'/>
     <exports symbol='xmlSprintfElementContent'/>
     <exports symbol='xmlValidBuildContentModel'/>
     <exports symbol='xmlValidCtxt'/>
     <exports symbol='xmlValidCtxtNormalizeAttributeValue'/>
     <exports symbol='xmlValidCtxtPtr'/>
     <exports symbol='xmlValidGetPotentialChildren'/>
     <exports symbol='xmlValidGetValidElements'/>
     <exports symbol='xmlValidNormalizeAttributeValue'/>
     <exports symbol='xmlValidState'/>
     <exports symbol='xmlValidStatePtr'/>
     <exports symbol='xmlValidateAttributeDecl'/>
     <exports symbol='xmlValidateAttributeValue'/>
     <exports symbol='xmlValidateDocument'/>
     <exports symbol='xmlValidateDocumentFinal'/>
     <exports symbol='xmlValidateDtd'/>
     <exports symbol='xmlValidateDtdFinal'/>
     <exports symbol='xmlValidateElement'/>
     <exports symbol='xmlValidateElementDecl'/>
     <exports symbol='xmlValidateNameValue'/>
     <exports symbol='xmlValidateNamesValue'/>
     <exports symbol='xmlValidateNmtokenValue'/>
     <exports symbol='xmlValidateNmtokensValue'/>
     <exports symbol='xmlValidateNotationDecl'/>
     <exports symbol='xmlValidateNotationUse'/>
     <exports symbol='xmlValidateOneAttribute'/>
     <exports symbol='xmlValidateOneElement'/>
     <exports symbol='xmlValidateOneNamespace'/>
     <exports symbol='xmlValidatePopElement'/>
     <exports symbol='xmlValidatePushCData'/>
     <exports symbol='xmlValidatePushElement'/>
     <exports symbol='xmlValidateRoot'/>
     <exports symbol='xmlValidityErrorFunc'/>
     <exports symbol='xmlValidityWarningFunc'/>
    </file>
    <file name='HTMLparser'>
     <exports symbol='UTF8ToHtml'/>
     <exports symbol='_htmlElemDesc'/>
     <exports symbol='_htmlEntityDesc'/>
     <exports symbol='htmlAutoCloseTag'/>
     <exports symbol='htmlCreatePushParserCtxt'/>
     <exports symbol='htmlDocPtr'/>
     <exports symbol='htmlElemDesc'/>
     <exports symbol='htmlElemDescPtr'/>
     <exports symbol='htmlEncodeEntities'/>
     <exports symbol='htmlEntityDesc'/>
     <exports symbol='htmlEntityDescPtr'/>
     <exports symbol='htmlEntityLookup'/>
     <exports symbol='htmlEntityValueLookup'/>
     <exports symbol='htmlFreeParserCtxt'/>
     <exports symbol='htmlHandleOmittedElem'/>
     <exports symbol='htmlIsAutoClosed'/>
     <exports symbol='htmlIsScriptAttribute'/>
     <exports symbol='htmlNodePtr'/>
     <exports symbol='htmlParseCharRef'/>
     <exports symbol='htmlParseChunk'/>
     <exports symbol='htmlParseDoc'/>
     <exports symbol='htmlParseDocument'/>
     <exports symbol='htmlParseElement'/>
     <exports symbol='htmlParseEntityRef'/>
     <exports symbol='htmlParseFile'/>
     <exports symbol='htmlParserCtxt'/>
     <exports symbol='htmlParserCtxtPtr'/>
     <exports symbol='htmlParserInput'/>
     <exports symbol='htmlParserInputPtr'/>
     <exports symbol='htmlParserNodeInfo'/>
     <exports symbol='htmlSAXHandler'/>
     <exports symbol='htmlSAXHandlerPtr'/>
     <exports symbol='htmlSAXParseDoc'/>
     <exports symbol='htmlSAXParseFile'/>
     <exports symbol='htmlTagLookup'/>
    </file>
    <file name='parser'>
     <exports symbol='XML_COMPLETE_ATTRS'/>
     <exports symbol='XML_DEFAULT_VERSION'/>
     <exports symbol='XML_DETECT_IDS'/>
     <exports symbol='XML_PARSER_ATTRIBUTE_VALUE'/>
     <exports symbol='XML_PARSER_CDATA_SECTION'/>
     <exports symbol='XML_PARSER_COMMENT'/>
     <exports symbol='XML_PARSER_CONTENT'/>
     <exports symbol='XML_PARSER_DTD'/>
     <exports symbol='XML_PARSER_END_TAG'/>
     <exports symbol='XML_PARSER_ENTITY_DECL'/>
     <exports symbol='XML_PARSER_ENTITY_VALUE'/>
     <exports symbol='XML_PARSER_EOF'/>
     <exports symbol='XML_PARSER_EPILOG'/>
     <exports symbol='XML_PARSER_IGNORE'/>
     <exports symbol='XML_PARSER_MISC'/>
     <exports symbol='XML_PARSER_PI'/>
     <exports symbol='XML_PARSER_PROLOG'/>
     <exports symbol='XML_PARSER_PUBLIC_LITERAL'/>
     <exports symbol='XML_PARSER_START'/>
     <exports symbol='XML_PARSER_START_TAG'/>
     <exports symbol='XML_PARSER_SYSTEM_LITERAL'/>
     <exports symbol='_xmlParserCtxt'/>
     <exports symbol='_xmlParserInput'/>
     <exports symbol='_xmlParserNodeInfo'/>
     <exports symbol='_xmlParserNodeInfoSeq'/>
     <exports symbol='_xmlSAXHandler'/>
     <exports symbol='_xmlSAXLocator'/>
     <exports symbol='attributeDeclSAXFunc'/>
     <exports symbol='attributeSAXFunc'/>
     <exports symbol='cdataBlockSAXFunc'/>
     <exports symbol='charactersSAXFunc'/>
     <exports symbol='commentSAXFunc'/>
     <exports symbol='elementDeclSAXFunc'/>
     <exports symbol='endDocumentSAXFunc'/>
     <exports symbol='endElementSAXFunc'/>
     <exports symbol='entityDeclSAXFunc'/>
     <exports symbol='errorSAXFunc'/>
     <exports symbol='externalSubsetSAXFunc'/>
     <exports symbol='fatalErrorSAXFunc'/>
     <exports symbol='getEntitySAXFunc'/>
     <exports symbol='getParameterEntitySAXFunc'/>
     <exports symbol='hasExternalSubsetSAXFunc'/>
     <exports symbol='hasInternalSubsetSAXFunc'/>
     <exports symbol='ignorableWhitespaceSAXFunc'/>
     <exports symbol='internalSubsetSAXFunc'/>
     <exports symbol='isStandaloneSAXFunc'/>
     <exports symbol='notationDeclSAXFunc'/>
     <exports symbol='processingInstructionSAXFunc'/>
     <exports symbol='referenceSAXFunc'/>
     <exports symbol='resolveEntitySAXFunc'/>
     <exports symbol='setDocumentLocatorSAXFunc'/>
     <exports symbol='startDocumentSAXFunc'/>
     <exports symbol='startElementSAXFunc'/>
     <exports symbol='unparsedEntityDeclSAXFunc'/>
     <exports symbol='warningSAXFunc'/>
     <exports symbol='xmlCharStrdup'/>
     <exports symbol='xmlCharStrndup'/>
     <exports symbol='xmlCleanupParser'/>
     <exports symbol='xmlClearNodeInfoSeq'/>
     <exports symbol='xmlClearParserCtxt'/>
     <exports symbol='xmlCreateDocParserCtxt'/>
     <exports symbol='xmlCreateIOParserCtxt'/>
     <exports symbol='xmlCreatePushParserCtxt'/>
     <exports symbol='xmlExternalEntityLoader'/>
     <exports symbol='xmlFreeParserCtxt'/>
     <exports symbol='xmlGetExternalEntityLoader'/>
     <exports symbol='xmlGetFeature'/>
     <exports symbol='xmlGetFeaturesList'/>
     <exports symbol='xmlGetWarningsDefaultValue'/>
     <exports symbol='xmlIOParseDTD'/>
     <exports symbol='xmlInitNodeInfoSeq'/>
     <exports symbol='xmlInitParser'/>
     <exports symbol='xmlInitParserCtxt'/>
     <exports symbol='xmlKeepBlanksDefault'/>
     <exports symbol='xmlLineNumbersDefault'/>
     <exports symbol='xmlLoadExternalEntity'/>
     <exports symbol='xmlNewIOInputStream'/>
     <exports symbol='xmlParseBalancedChunkMemory'/>
     <exports symbol='xmlParseBalancedChunkMemoryRecover'/>
     <exports symbol='xmlParseChunk'/>
     <exports symbol='xmlParseCtxtExternalEntity'/>
     <exports symbol='xmlParseDTD'/>
     <exports symbol='xmlParseDoc'/>
     <exports symbol='xmlParseDocument'/>
     <exports symbol='xmlParseEntity'/>
     <exports symbol='xmlParseExtParsedEnt'/>
     <exports symbol='xmlParseExternalEntity'/>
     <exports symbol='xmlParseFile'/>
     <exports symbol='xmlParseMemory'/>
     <exports symbol='xmlParserAddNodeInfo'/>
     <exports symbol='xmlParserFindNodeInfo'/>
     <exports symbol='xmlParserFindNodeInfoIndex'/>
     <exports symbol='xmlParserInputDeallocate'/>
     <exports symbol='xmlParserInputGrow'/>
     <exports symbol='xmlParserInputRead'/>
     <exports symbol='xmlParserInputState'/>
     <exports symbol='xmlParserNodeInfo'/>
     <exports symbol='xmlParserNodeInfoPtr'/>
     <exports symbol='xmlParserNodeInfoSeq'/>
     <exports symbol='xmlParserNodeInfoSeqPtr'/>
     <exports symbol='xmlParserVersion'/>
     <exports symbol='xmlPedanticParserDefault'/>
     <exports symbol='xmlRecoverDoc'/>
     <exports symbol='xmlRecoverFile'/>
     <exports symbol='xmlRecoverMemory'/>
     <exports symbol='xmlSAXParseDTD'/>
     <exports symbol='xmlSAXParseDoc'/>
     <exports symbol='xmlSAXParseEntity'/>
     <exports symbol='xmlSAXParseFile'/>
     <exports symbol='xmlSAXParseFileWithData'/>
     <exports symbol='xmlSAXParseMemory'/>
     <exports symbol='xmlSAXParseMemoryWithData'/>
     <exports symbol='xmlSAXUserParseFile'/>
     <exports symbol='xmlSAXUserParseMemory'/>
     <exports symbol='xmlSetExternalEntityLoader'/>
     <exports symbol='xmlSetFeature'/>
     <exports symbol='xmlSetupParserForBuffer'/>
     <exports symbol='xmlStopParser'/>
     <exports symbol='xmlStrEqual'/>
     <exports symbol='xmlStrcasecmp'/>
     <exports symbol='xmlStrcasestr'/>
     <exports symbol='xmlStrcat'/>
     <exports symbol='xmlStrchr'/>
     <exports symbol='xmlStrcmp'/>
     <exports symbol='xmlStrdup'/>
     <exports symbol='xmlStrlen'/>
     <exports symbol='xmlStrncasecmp'/>
     <exports symbol='xmlStrncat'/>
     <exports symbol='xmlStrncmp'/>
     <exports symbol='xmlStrndup'/>
     <exports symbol='xmlStrstr'/>
     <exports symbol='xmlStrsub'/>
     <exports symbol='xmlSubstituteEntitiesDefault'/>
     <exports symbol='xmlSubstituteEntitiesDefaultValue'/>
    </file>
    <file name='xmlreader'>
     <exports symbol='XML_PARSER_DEFAULTATTRS'/>
     <exports symbol='XML_PARSER_LOADDTD'/>
     <exports symbol='XML_PARSER_SUBST_ENTITIES'/>
     <exports symbol='XML_PARSER_VALIDATE'/>
     <exports symbol='xmlFreeTextReader'/>
     <exports symbol='xmlNewTextReader'/>
     <exports symbol='xmlNewTextReaderFilename'/>
     <exports symbol='xmlParserProperties'/>
     <exports symbol='xmlTextReader'/>
     <exports symbol='xmlTextReaderAttributeCount'/>
     <exports symbol='xmlTextReaderBaseUri'/>
     <exports symbol='xmlTextReaderClose'/>
     <exports symbol='xmlTextReaderCurrentDoc'/>
     <exports symbol='xmlTextReaderCurrentNode'/>
     <exports symbol='xmlTextReaderDepth'/>
     <exports symbol='xmlTextReaderGetAttribute'/>
     <exports symbol='xmlTextReaderGetAttributeNo'/>
     <exports symbol='xmlTextReaderGetAttributeNs'/>
     <exports symbol='xmlTextReaderGetParserProp'/>
     <exports symbol='xmlTextReaderGetRemainder'/>
     <exports symbol='xmlTextReaderHasAttributes'/>
     <exports symbol='xmlTextReaderHasValue'/>
     <exports symbol='xmlTextReaderIsDefault'/>
     <exports symbol='xmlTextReaderIsEmptyElement'/>
     <exports symbol='xmlTextReaderLocalName'/>
     <exports symbol='xmlTextReaderLookupNamespace'/>
     <exports symbol='xmlTextReaderMoveToAttribute'/>
     <exports symbol='xmlTextReaderMoveToAttributeNo'/>
     <exports symbol='xmlTextReaderMoveToAttributeNs'/>
     <exports symbol='xmlTextReaderMoveToElement'/>
     <exports symbol='xmlTextReaderMoveToFirstAttribute'/>
     <exports symbol='xmlTextReaderMoveToNextAttribute'/>
     <exports symbol='xmlTextReaderName'/>
     <exports symbol='xmlTextReaderNamespaceUri'/>
     <exports symbol='xmlTextReaderNodeType'/>
     <exports symbol='xmlTextReaderNormalization'/>
     <exports symbol='xmlTextReaderPrefix'/>
     <exports symbol='xmlTextReaderPtr'/>
     <exports symbol='xmlTextReaderQuoteChar'/>
     <exports symbol='xmlTextReaderRead'/>
     <exports symbol='xmlTextReaderReadAttributeValue'/>
     <exports symbol='xmlTextReaderReadInnerXml'/>
     <exports symbol='xmlTextReaderReadOuterXml'/>
     <exports symbol='xmlTextReaderReadState'/>
     <exports symbol='xmlTextReaderReadString'/>
     <exports symbol='xmlTextReaderSetParserProp'/>
     <exports symbol='xmlTextReaderValue'/>
     <exports symbol='xmlTextReaderXmlLang'/>
    </file>
    <file name='globals'>
     <exports symbol='_xmlGlobalState'/>
     <exports symbol='docbDefaultSAXHandler'/>
     <exports symbol='docbDefaultSAXHandler'/>
     <exports symbol='htmlDefaultSAXHandler'/>
     <exports symbol='htmlDefaultSAXHandler'/>
     <exports symbol='oldXMLWDcompatibility'/>
     <exports symbol='oldXMLWDcompatibility'/>
     <exports symbol='xmlBufferAllocScheme'/>
     <exports symbol='xmlBufferAllocScheme'/>
     <exports symbol='xmlDefaultBufferSize'/>
     <exports symbol='xmlDefaultBufferSize'/>
     <exports symbol='xmlDefaultSAXHandler'/>
     <exports symbol='xmlDefaultSAXHandler'/>
     <exports symbol='xmlDefaultSAXLocator'/>
     <exports symbol='xmlDefaultSAXLocator'/>
     <exports symbol='xmlDeregisterNodeDefault'/>
     <exports symbol='xmlDeregisterNodeDefaultValue'/>
     <exports symbol='xmlDeregisterNodeDefaultValue'/>
     <exports symbol='xmlDeregisterNodeFunc'/>
     <exports symbol='xmlDoValidityCheckingDefaultValue'/>
     <exports symbol='xmlDoValidityCheckingDefaultValue'/>
     <exports symbol='xmlFree'/>
     <exports symbol='xmlFree'/>
     <exports symbol='xmlGenericError'/>
     <exports symbol='xmlGenericError'/>
     <exports symbol='xmlGenericErrorContext'/>
     <exports symbol='xmlGenericErrorContext'/>
     <exports symbol='xmlGetWarningsDefaultValue'/>
     <exports symbol='xmlGetWarningsDefaultValue'/>
     <exports symbol='xmlGlobalState'/>
     <exports symbol='xmlGlobalStatePtr'/>
     <exports symbol='xmlIndentTreeOutput'/>
     <exports symbol='xmlIndentTreeOutput'/>
     <exports symbol='xmlInitializeGlobalState'/>
     <exports symbol='xmlKeepBlanksDefaultValue'/>
     <exports symbol='xmlKeepBlanksDefaultValue'/>
     <exports symbol='xmlLineNumbersDefaultValue'/>
     <exports symbol='xmlLineNumbersDefaultValue'/>
     <exports symbol='xmlLoadExtDtdDefaultValue'/>
     <exports symbol='xmlLoadExtDtdDefaultValue'/>
     <exports symbol='xmlMalloc'/>
     <exports symbol='xmlMalloc'/>
     <exports symbol='xmlMemStrdup'/>
     <exports symbol='xmlMemStrdup'/>
     <exports symbol='xmlParserDebugEntities'/>
     <exports symbol='xmlParserDebugEntities'/>
     <exports symbol='xmlParserVersion'/>
     <exports symbol='xmlParserVersion'/>
     <exports symbol='xmlPedanticParserDefaultValue'/>
     <exports symbol='xmlPedanticParserDefaultValue'/>
     <exports symbol='xmlRealloc'/>
     <exports symbol='xmlRealloc'/>
     <exports symbol='xmlRegisterNodeDefault'/>
     <exports symbol='xmlRegisterNodeDefaultValue'/>
     <exports symbol='xmlRegisterNodeDefaultValue'/>
     <exports symbol='xmlRegisterNodeFunc'/>
     <exports symbol='xmlSaveNoEmptyTags'/>
     <exports symbol='xmlSaveNoEmptyTags'/>
     <exports symbol='xmlSubstituteEntitiesDefaultValue'/>
     <exports symbol='xmlSubstituteEntitiesDefaultValue'/>
     <exports symbol='xmlTreeIndentString'/>
     <exports symbol='xmlTreeIndentString'/>
    </file>
    <file name='threads'>
     <exports symbol='xmlCleanupThreads'/>
     <exports symbol='xmlFreeMutex'/>
     <exports symbol='xmlFreeRMutex'/>
     <exports symbol='xmlGetGlobalState'/>
     <exports symbol='xmlGetThreadId'/>
     <exports symbol='xmlInitThreads'/>
     <exports symbol='xmlIsMainThread'/>
     <exports symbol='xmlLockLibrary'/>
     <exports symbol='xmlMutex'/>
     <exports symbol='xmlMutexLock'/>
     <exports symbol='xmlMutexPtr'/>
     <exports symbol='xmlMutexUnlock'/>
     <exports symbol='xmlNewMutex'/>
     <exports symbol='xmlNewRMutex'/>
     <exports symbol='xmlRMutex'/>
     <exports symbol='xmlRMutexLock'/>
     <exports symbol='xmlRMutexPtr'/>
     <exports symbol='xmlRMutexUnlock'/>
     <exports symbol='xmlUnlockLibrary'/>
    </file>
    <file name='hash'>
     <exports symbol='xmlHashAddEntry'/>
     <exports symbol='xmlHashAddEntry2'/>
     <exports symbol='xmlHashAddEntry3'/>
     <exports symbol='xmlHashCopier'/>
     <exports symbol='xmlHashCopy'/>
     <exports symbol='xmlHashCreate'/>
     <exports symbol='xmlHashDeallocator'/>
     <exports symbol='xmlHashFree'/>
     <exports symbol='xmlHashLookup'/>
     <exports symbol='xmlHashLookup2'/>
     <exports symbol='xmlHashLookup3'/>
     <exports symbol='xmlHashRemoveEntry'/>
     <exports symbol='xmlHashRemoveEntry2'/>
     <exports symbol='xmlHashRemoveEntry3'/>
     <exports symbol='xmlHashScan'/>
     <exports symbol='xmlHashScan3'/>
     <exports symbol='xmlHashScanFull'/>
     <exports symbol='xmlHashScanFull3'/>
     <exports symbol='xmlHashScanner'/>
     <exports symbol='xmlHashScannerFull'/>
     <exports symbol='xmlHashSize'/>
     <exports symbol='xmlHashTable'/>
     <exports symbol='xmlHashTablePtr'/>
     <exports symbol='xmlHashUpdateEntry'/>
     <exports symbol='xmlHashUpdateEntry2'/>
     <exports symbol='xmlHashUpdateEntry3'/>
    </file>
    <file name='xmlerror'>
     <exports symbol='XML_ERR_ATTLIST_NOT_FINISHED'/>
     <exports symbol='XML_ERR_ATTLIST_NOT_STARTED'/>
     <exports symbol='XML_ERR_ATTRIBUTE_NOT_FINISHED'/>
     <exports symbol='XML_ERR_ATTRIBUTE_NOT_STARTED'/>
     <exports symbol='XML_ERR_ATTRIBUTE_REDEFINED'/>
     <exports symbol='XML_ERR_ATTRIBUTE_WITHOUT_VALUE'/>
     <exports symbol='XML_ERR_CDATA_NOT_FINISHED'/>
     <exports symbol='XML_ERR_CHARREF_AT_EOF'/>
     <exports symbol='XML_ERR_CHARREF_IN_DTD'/>
     <exports symbol='XML_ERR_CHARREF_IN_EPILOG'/>
     <exports symbol='XML_ERR_CHARREF_IN_PROLOG'/>
     <exports symbol='XML_ERR_COMMENT_NOT_FINISHED'/>
     <exports symbol='XML_ERR_CONDSEC_INVALID'/>
     <exports symbol='XML_ERR_CONDSEC_NOT_FINISHED'/>
     <exports symbol='XML_ERR_CONDSEC_NOT_STARTED'/>
     <exports symbol='XML_ERR_DOCTYPE_NOT_FINISHED'/>
     <exports symbol='XML_ERR_DOCUMENT_EMPTY'/>
     <exports symbol='XML_ERR_DOCUMENT_END'/>
     <exports symbol='XML_ERR_DOCUMENT_START'/>
     <exports symbol='XML_ERR_ELEMCONTENT_NOT_FINISHED'/>
     <exports symbol='XML_ERR_ELEMCONTENT_NOT_STARTED'/>
     <exports symbol='XML_ERR_ENCODING_NAME'/>
     <exports symbol='XML_ERR_ENTITYREF_AT_EOF'/>
     <exports symbol='XML_ERR_ENTITYREF_IN_DTD'/>
     <exports symbol='XML_ERR_ENTITYREF_IN_EPILOG'/>
     <exports symbol='XML_ERR_ENTITYREF_IN_PROLOG'/>
     <exports symbol='XML_ERR_ENTITYREF_NO_NAME'/>
     <exports symbol='XML_ERR_ENTITYREF_SEMICOL_MISSING'/>
     <exports symbol='XML_ERR_ENTITY_BOUNDARY'/>
     <exports symbol='XML_ERR_ENTITY_CHAR_ERROR'/>
     <exports symbol='XML_ERR_ENTITY_IS_EXTERNAL'/>
     <exports symbol='XML_ERR_ENTITY_IS_PARAMETER'/>
     <exports symbol='XML_ERR_ENTITY_LOOP'/>
     <exports symbol='XML_ERR_ENTITY_NOT_FINISHED'/>
     <exports symbol='XML_ERR_ENTITY_NOT_STARTED'/>
     <exports symbol='XML_ERR_ENTITY_PE_INTERNAL'/>
     <exports symbol='XML_ERR_EQUAL_REQUIRED'/>
     <exports symbol='XML_ERR_EXTRA_CONTENT'/>
     <exports symbol='XML_ERR_EXT_ENTITY_STANDALONE'/>
     <exports symbol='XML_ERR_EXT_SUBSET_NOT_FINISHED'/>
     <exports symbol='XML_ERR_GT_REQUIRED'/>
     <exports symbol='XML_ERR_HYPHEN_IN_COMMENT'/>
     <exports symbol='XML_ERR_INTERNAL_ERROR'/>
     <exports symbol='XML_ERR_INVALID_CHAR'/>
     <exports symbol='XML_ERR_INVALID_CHARREF'/>
     <exports symbol='XML_ERR_INVALID_DEC_CHARREF'/>
     <exports symbol='XML_ERR_INVALID_ENCODING'/>
     <exports symbol='XML_ERR_INVALID_HEX_CHARREF'/>
     <exports symbol='XML_ERR_INVALID_URI'/>
     <exports symbol='XML_ERR_LITERAL_NOT_FINISHED'/>
     <exports symbol='XML_ERR_LITERAL_NOT_STARTED'/>
     <exports symbol='XML_ERR_LTSLASH_REQUIRED'/>
     <exports symbol='XML_ERR_LT_IN_ATTRIBUTE'/>
     <exports symbol='XML_ERR_LT_REQUIRED'/>
     <exports symbol='XML_ERR_MISPLACED_CDATA_END'/>
     <exports symbol='XML_ERR_MIXED_NOT_FINISHED'/>
     <exports symbol='XML_ERR_MIXED_NOT_STARTED'/>
     <exports symbol='XML_ERR_NAME_REQUIRED'/>
     <exports symbol='XML_ERR_NMTOKEN_REQUIRED'/>
     <exports symbol='XML_ERR_NOTATION_NOT_FINISHED'/>
     <exports symbol='XML_ERR_NOTATION_NOT_STARTED'/>
     <exports symbol='XML_ERR_NOT_WELL_BALANCED'/>
     <exports symbol='XML_ERR_NO_DTD'/>
     <exports symbol='XML_ERR_NO_MEMORY'/>
     <exports symbol='XML_ERR_NS_DECL_ERROR'/>
     <exports symbol='XML_ERR_OK'/>
     <exports symbol='XML_ERR_PCDATA_REQUIRED'/>
     <exports symbol='XML_ERR_PEREF_AT_EOF'/>
     <exports symbol='XML_ERR_PEREF_IN_EPILOG'/>
     <exports symbol='XML_ERR_PEREF_IN_INT_SUBSET'/>
     <exports symbol='XML_ERR_PEREF_IN_PROLOG'/>
     <exports symbol='XML_ERR_PEREF_NO_NAME'/>
     <exports symbol='XML_ERR_PEREF_SEMICOL_MISSING'/>
     <exports symbol='XML_ERR_PI_NOT_FINISHED'/>
     <exports symbol='XML_ERR_PI_NOT_STARTED'/>
     <exports symbol='XML_ERR_PUBID_REQUIRED'/>
     <exports symbol='XML_ERR_RESERVED_XML_NAME'/>
     <exports symbol='XML_ERR_SEPARATOR_REQUIRED'/>
     <exports symbol='XML_ERR_SPACE_REQUIRED'/>
     <exports symbol='XML_ERR_STANDALONE_VALUE'/>
     <exports symbol='XML_ERR_STRING_NOT_CLOSED'/>
     <exports symbol='XML_ERR_STRING_NOT_STARTED'/>
     <exports symbol='XML_ERR_TAG_NAME_MISMATCH'/>
     <exports symbol='XML_ERR_TAG_NOT_FINISHED'/>
     <exports symbol='XML_ERR_UNDECLARED_ENTITY'/>
     <exports symbol='XML_ERR_UNKNOWN_ENCODING'/>
     <exports symbol='XML_ERR_UNPARSED_ENTITY'/>
     <exports symbol='XML_ERR_UNSUPPORTED_ENCODING'/>
     <exports symbol='XML_ERR_URI_FRAGMENT'/>
     <exports symbol='XML_ERR_URI_REQUIRED'/>
     <exports symbol='XML_ERR_VALUE_REQUIRED'/>
     <exports symbol='XML_ERR_XMLDECL_NOT_FINISHED'/>
     <exports symbol='XML_ERR_XMLDECL_NOT_STARTED'/>
     <exports symbol='XML_WAR_CATALOG_PI'/>
     <exports symbol='XML_WAR_UNDECLARED_ENTITY'/>
     <exports symbol='initGenericErrorDefaultFunc'/>
     <exports symbol='xmlGenericErrorFunc'/>
     <exports symbol='xmlParserError'/>
     <exports symbol='xmlParserErrors'/>
     <exports symbol='xmlParserPrintFileContext'/>
     <exports symbol='xmlParserPrintFileInfo'/>
     <exports symbol='xmlParserValidityError'/>
     <exports symbol='xmlParserValidityWarning'/>
     <exports symbol='xmlParserWarning'/>
     <exports symbol='xmlSetGenericErrorFunc'/>
    </file>
    <file name='tree'>
     <exports symbol='BAD_CAST'/>
     <exports symbol='BASE_BUFFER_SIZE'/>
     <exports symbol='XML_ATTRIBUTE_CDATA'/>
     <exports symbol='XML_ATTRIBUTE_DECL'/>
     <exports symbol='XML_ATTRIBUTE_ENTITIES'/>
     <exports symbol='XML_ATTRIBUTE_ENTITY'/>
     <exports symbol='XML_ATTRIBUTE_ENUMERATION'/>
     <exports symbol='XML_ATTRIBUTE_FIXED'/>
     <exports symbol='XML_ATTRIBUTE_ID'/>
     <exports symbol='XML_ATTRIBUTE_IDREF'/>
     <exports symbol='XML_ATTRIBUTE_IDREFS'/>
     <exports symbol='XML_ATTRIBUTE_IMPLIED'/>
     <exports symbol='XML_ATTRIBUTE_NMTOKEN'/>
     <exports symbol='XML_ATTRIBUTE_NMTOKENS'/>
     <exports symbol='XML_ATTRIBUTE_NODE'/>
     <exports symbol='XML_ATTRIBUTE_NONE'/>
     <exports symbol='XML_ATTRIBUTE_NOTATION'/>
     <exports symbol='XML_ATTRIBUTE_REQUIRED'/>
     <exports symbol='XML_BUFFER_ALLOC_DOUBLEIT'/>
     <exports symbol='XML_BUFFER_ALLOC_EXACT'/>
     <exports symbol='XML_CDATA_SECTION_NODE'/>
     <exports symbol='XML_COMMENT_NODE'/>
     <exports symbol='XML_DOCB_DOCUMENT_NODE'/>
     <exports symbol='XML_DOCUMENT_FRAG_NODE'/>
     <exports symbol='XML_DOCUMENT_NODE'/>
     <exports symbol='XML_DOCUMENT_TYPE_NODE'/>
     <exports symbol='XML_DTD_NODE'/>
     <exports symbol='XML_ELEMENT_CONTENT_ELEMENT'/>
     <exports symbol='XML_ELEMENT_CONTENT_MULT'/>
     <exports symbol='XML_ELEMENT_CONTENT_ONCE'/>
     <exports symbol='XML_ELEMENT_CONTENT_OPT'/>
     <exports symbol='XML_ELEMENT_CONTENT_OR'/>
     <exports symbol='XML_ELEMENT_CONTENT_PCDATA'/>
     <exports symbol='XML_ELEMENT_CONTENT_PLUS'/>
     <exports symbol='XML_ELEMENT_CONTENT_SEQ'/>
     <exports symbol='XML_ELEMENT_DECL'/>
     <exports symbol='XML_ELEMENT_NODE'/>
     <exports symbol='XML_ELEMENT_TYPE_ANY'/>
     <exports symbol='XML_ELEMENT_TYPE_ELEMENT'/>
     <exports symbol='XML_ELEMENT_TYPE_EMPTY'/>
     <exports symbol='XML_ELEMENT_TYPE_MIXED'/>
     <exports symbol='XML_ELEMENT_TYPE_UNDEFINED'/>
     <exports symbol='XML_ENTITY_DECL'/>
     <exports symbol='XML_ENTITY_NODE'/>
     <exports symbol='XML_ENTITY_REF_NODE'/>
     <exports symbol='XML_GET_CONTENT'/>
     <exports symbol='XML_GET_LINE'/>
     <exports symbol='XML_HTML_DOCUMENT_NODE'/>
     <exports symbol='XML_LOCAL_NAMESPACE'/>
     <exports symbol='XML_NAMESPACE_DECL'/>
     <exports symbol='XML_NOTATION_NODE'/>
     <exports symbol='XML_PI_NODE'/>
     <exports symbol='XML_TEXT_NODE'/>
     <exports symbol='XML_XINCLUDE_END'/>
     <exports symbol='XML_XINCLUDE_START'/>
     <exports symbol='XML_XML_NAMESPACE'/>
     <exports symbol='_xmlAttr'/>
     <exports symbol='_xmlAttribute'/>
     <exports symbol='_xmlBuffer'/>
     <exports symbol='_xmlDoc'/>
     <exports symbol='_xmlDtd'/>
     <exports symbol='_xmlElement'/>
     <exports symbol='_xmlElementContent'/>
     <exports symbol='_xmlEnumeration'/>
     <exports symbol='_xmlID'/>
     <exports symbol='_xmlNode'/>
     <exports symbol='_xmlNotation'/>
     <exports symbol='_xmlNs'/>
     <exports symbol='_xmlRef'/>
     <exports symbol='oldXMLWDcompatibility'/>
     <exports symbol='xmlAddChild'/>
     <exports symbol='xmlAddChildList'/>
     <exports symbol='xmlAddNextSibling'/>
     <exports symbol='xmlAddPrevSibling'/>
     <exports symbol='xmlAddSibling'/>
     <exports symbol='xmlAttr'/>
     <exports symbol='xmlAttrPtr'/>
     <exports symbol='xmlAttribute'/>
     <exports symbol='xmlAttributeDefault'/>
     <exports symbol='xmlAttributePtr'/>
     <exports symbol='xmlAttributeType'/>
     <exports symbol='xmlBuffer'/>
     <exports symbol='xmlBufferAdd'/>
     <exports symbol='xmlBufferAddHead'/>
     <exports symbol='xmlBufferAllocScheme'/>
     <exports symbol='xmlBufferAllocationScheme'/>
     <exports symbol='xmlBufferCCat'/>
     <exports symbol='xmlBufferCat'/>
     <exports symbol='xmlBufferContent'/>
     <exports symbol='xmlBufferCreate'/>
     <exports symbol='xmlBufferCreateSize'/>
     <exports symbol='xmlBufferDump'/>
     <exports symbol='xmlBufferEmpty'/>
     <exports symbol='xmlBufferFree'/>
     <exports symbol='xmlBufferGrow'/>
     <exports symbol='xmlBufferLength'/>
     <exports symbol='xmlBufferPtr'/>
     <exports symbol='xmlBufferResize'/>
     <exports symbol='xmlBufferSetAllocationScheme'/>
     <exports symbol='xmlBufferShrink'/>
     <exports symbol='xmlBufferWriteCHAR'/>
     <exports symbol='xmlBufferWriteChar'/>
     <exports symbol='xmlBufferWriteQuotedString'/>
     <exports symbol='xmlChar'/>
     <exports symbol='xmlChildrenNode'/>
     <exports symbol='xmlCopyDoc'/>
     <exports symbol='xmlCopyDtd'/>
     <exports symbol='xmlCopyNamespace'/>
     <exports symbol='xmlCopyNamespaceList'/>
     <exports symbol='xmlCopyNode'/>
     <exports symbol='xmlCopyNodeList'/>
     <exports symbol='xmlCopyProp'/>
     <exports symbol='xmlCopyPropList'/>
     <exports symbol='xmlCreateIntSubset'/>
     <exports symbol='xmlDefaultBufferSize'/>
     <exports symbol='xmlDoc'/>
     <exports symbol='xmlDocCopyNode'/>
     <exports symbol='xmlDocDump'/>
     <exports symbol='xmlDocDumpFormatMemory'/>
     <exports symbol='xmlDocDumpFormatMemoryEnc'/>
     <exports symbol='xmlDocDumpMemory'/>
     <exports symbol='xmlDocDumpMemoryEnc'/>
     <exports symbol='xmlDocFormatDump'/>
     <exports symbol='xmlDocGetRootElement'/>
     <exports symbol='xmlDocPtr'/>
     <exports symbol='xmlDocSetRootElement'/>
     <exports symbol='xmlDtd'/>
     <exports symbol='xmlDtdPtr'/>
     <exports symbol='xmlElemDump'/>
     <exports symbol='xmlElement'/>
     <exports symbol='xmlElementContent'/>
     <exports symbol='xmlElementContentOccur'/>
     <exports symbol='xmlElementContentPtr'/>
     <exports symbol='xmlElementContentType'/>
     <exports symbol='xmlElementPtr'/>
     <exports symbol='xmlElementType'/>
     <exports symbol='xmlElementTypeVal'/>
     <exports symbol='xmlEntity'/>
     <exports symbol='xmlEntityPtr'/>
     <exports symbol='xmlEnumeration'/>
     <exports symbol='xmlEnumerationPtr'/>
     <exports symbol='xmlFreeDoc'/>
     <exports symbol='xmlFreeDtd'/>
     <exports symbol='xmlFreeNode'/>
     <exports symbol='xmlFreeNodeList'/>
     <exports symbol='xmlFreeNs'/>
     <exports symbol='xmlFreeNsList'/>
     <exports symbol='xmlFreeProp'/>
     <exports symbol='xmlFreePropList'/>
     <exports symbol='xmlGetBufferAllocationScheme'/>
     <exports symbol='xmlGetCompressMode'/>
     <exports symbol='xmlGetDocCompressMode'/>
     <exports symbol='xmlGetIntSubset'/>
     <exports symbol='xmlGetLastChild'/>
     <exports symbol='xmlGetLineNo'/>
     <exports symbol='xmlGetNodePath'/>
     <exports symbol='xmlGetNsList'/>
     <exports symbol='xmlGetNsProp'/>
     <exports symbol='xmlGetProp'/>
     <exports symbol='xmlHasNsProp'/>
     <exports symbol='xmlHasProp'/>
     <exports symbol='xmlID'/>
     <exports symbol='xmlIDPtr'/>
     <exports symbol='xmlIndentTreeOutput'/>
     <exports symbol='xmlIsBlankNode'/>
     <exports symbol='xmlIsXHTML'/>
     <exports symbol='xmlNewCDataBlock'/>
     <exports symbol='xmlNewCharRef'/>
     <exports symbol='xmlNewChild'/>
     <exports symbol='xmlNewComment'/>
     <exports symbol='xmlNewDoc'/>
     <exports symbol='xmlNewDocComment'/>
     <exports symbol='xmlNewDocFragment'/>
     <exports symbol='xmlNewDocNode'/>
     <exports symbol='xmlNewDocNodeEatName'/>
     <exports symbol='xmlNewDocProp'/>
     <exports symbol='xmlNewDocRawNode'/>
     <exports symbol='xmlNewDocText'/>
     <exports symbol='xmlNewDocTextLen'/>
     <exports symbol='xmlNewDtd'/>
     <exports symbol='xmlNewGlobalNs'/>
     <exports symbol='xmlNewNode'/>
     <exports symbol='xmlNewNodeEatName'/>
     <exports symbol='xmlNewNs'/>
     <exports symbol='xmlNewNsProp'/>
     <exports symbol='xmlNewNsPropEatName'/>
     <exports symbol='xmlNewPI'/>
     <exports symbol='xmlNewProp'/>
     <exports symbol='xmlNewReference'/>
     <exports symbol='xmlNewText'/>
     <exports symbol='xmlNewTextChild'/>
     <exports symbol='xmlNewTextLen'/>
     <exports symbol='xmlNode'/>
     <exports symbol='xmlNodeAddContent'/>
     <exports symbol='xmlNodeAddContentLen'/>
     <exports symbol='xmlNodeDump'/>
     <exports symbol='xmlNodeDumpOutput'/>
     <exports symbol='xmlNodeGetBase'/>
     <exports symbol='xmlNodeGetContent'/>
     <exports symbol='xmlNodeGetLang'/>
     <exports symbol='xmlNodeGetSpacePreserve'/>
     <exports symbol='xmlNodeIsText'/>
     <exports symbol='xmlNodeListGetRawString'/>
     <exports symbol='xmlNodeListGetString'/>
     <exports symbol='xmlNodePtr'/>
     <exports symbol='xmlNodeSetBase'/>
     <exports symbol='xmlNodeSetContent'/>
     <exports symbol='xmlNodeSetContentLen'/>
     <exports symbol='xmlNodeSetLang'/>
     <exports symbol='xmlNodeSetName'/>
     <exports symbol='xmlNodeSetSpacePreserve'/>
     <exports symbol='xmlNotation'/>
     <exports symbol='xmlNotationPtr'/>
     <exports symbol='xmlNs'/>
     <exports symbol='xmlNsPtr'/>
     <exports symbol='xmlNsType'/>
     <exports symbol='xmlOutputBuffer'/>
     <exports symbol='xmlOutputBufferPtr'/>
     <exports symbol='xmlParserCtxt'/>
     <exports symbol='xmlParserCtxtPtr'/>
     <exports symbol='xmlParserInput'/>
     <exports symbol='xmlParserInputBuffer'/>
     <exports symbol='xmlParserInputBufferPtr'/>
     <exports symbol='xmlParserInputPtr'/>
     <exports symbol='xmlReconciliateNs'/>
     <exports symbol='xmlRef'/>
     <exports symbol='xmlRefPtr'/>
     <exports symbol='xmlRemoveProp'/>
     <exports symbol='xmlReplaceNode'/>
     <exports symbol='xmlRootNode'/>
     <exports symbol='xmlSAXHandler'/>
     <exports symbol='xmlSAXHandlerPtr'/>
     <exports symbol='xmlSAXLocator'/>
     <exports symbol='xmlSAXLocatorPtr'/>
     <exports symbol='xmlSaveFile'/>
     <exports symbol='xmlSaveFileEnc'/>
     <exports symbol='xmlSaveFileTo'/>
     <exports symbol='xmlSaveFormatFile'/>
     <exports symbol='xmlSaveFormatFileEnc'/>
     <exports symbol='xmlSaveFormatFileTo'/>
     <exports symbol='xmlSaveNoEmptyTags'/>
     <exports symbol='xmlSearchNs'/>
     <exports symbol='xmlSearchNsByHref'/>
     <exports symbol='xmlSetBufferAllocationScheme'/>
     <exports symbol='xmlSetCompressMode'/>
     <exports symbol='xmlSetDocCompressMode'/>
     <exports symbol='xmlSetListDoc'/>
     <exports symbol='xmlSetNs'/>
     <exports symbol='xmlSetNsProp'/>
     <exports symbol='xmlSetProp'/>
     <exports symbol='xmlSetTreeDoc'/>
     <exports symbol='xmlStringGetNodeList'/>
     <exports symbol='xmlStringLenGetNodeList'/>
     <exports symbol='xmlTextConcat'/>
     <exports symbol='xmlTextMerge'/>
     <exports symbol='xmlUnlinkNode'/>
     <exports symbol='xmlUnsetNsProp'/>
     <exports symbol='xmlUnsetProp'/>
    </file>
    <file name='xmlregexp'>
     <exports symbol='xmlRegExecCallbacks'/>
     <exports symbol='xmlRegExecCtxt'/>
     <exports symbol='xmlRegExecCtxtPtr'/>
     <exports symbol='xmlRegExecPushString'/>
     <exports symbol='xmlRegFreeExecCtxt'/>
     <exports symbol='xmlRegFreeRegexp'/>
     <exports symbol='xmlRegNewExecCtxt'/>
     <exports symbol='xmlRegexp'/>
     <exports symbol='xmlRegexpCompile'/>
     <exports symbol='xmlRegexpExec'/>
     <exports symbol='xmlRegexpIsDeterminist'/>
     <exports symbol='xmlRegexpPrint'/>
     <exports symbol='xmlRegexpPtr'/>
    </file>
    <file name='nanohttp'>
     <exports symbol='xmlNanoHTTPAuthHeader'/>
     <exports symbol='xmlNanoHTTPCleanup'/>
     <exports symbol='xmlNanoHTTPClose'/>
     <exports symbol='xmlNanoHTTPFetch'/>
     <exports symbol='xmlNanoHTTPInit'/>
     <exports symbol='xmlNanoHTTPMethod'/>
     <exports symbol='xmlNanoHTTPMethodRedir'/>
     <exports symbol='xmlNanoHTTPOpen'/>
     <exports symbol='xmlNanoHTTPOpenRedir'/>
     <exports symbol='xmlNanoHTTPRead'/>
     <exports symbol='xmlNanoHTTPReturnCode'/>
     <exports symbol='xmlNanoHTTPSave'/>
     <exports symbol='xmlNanoHTTPScanProxy'/>
    </file>
    <file name='xmlunicode'>
     <exports symbol='xmlUCSIsAlphabeticPresentationForms'/>
     <exports symbol='xmlUCSIsArabic'/>
     <exports symbol='xmlUCSIsArabicPresentationFormsA'/>
     <exports symbol='xmlUCSIsArabicPresentationFormsB'/>
     <exports symbol='xmlUCSIsArmenian'/>
     <exports symbol='xmlUCSIsArrows'/>
     <exports symbol='xmlUCSIsBasicLatin'/>
     <exports symbol='xmlUCSIsBengali'/>
     <exports symbol='xmlUCSIsBlock'/>
     <exports symbol='xmlUCSIsBlockElements'/>
     <exports symbol='xmlUCSIsBopomofo'/>
     <exports symbol='xmlUCSIsBopomofoExtended'/>
     <exports symbol='xmlUCSIsBoxDrawing'/>
     <exports symbol='xmlUCSIsBraillePatterns'/>
     <exports symbol='xmlUCSIsByzantineMusicalSymbols'/>
     <exports symbol='xmlUCSIsCJKCompatibility'/>
     <exports symbol='xmlUCSIsCJKCompatibilityForms'/>
     <exports symbol='xmlUCSIsCJKCompatibilityIdeographs'/>
     <exports symbol='xmlUCSIsCJKCompatibilityIdeographsSupplement'/>
     <exports symbol='xmlUCSIsCJKRadicalsSupplement'/>
     <exports symbol='xmlUCSIsCJKSymbolsandPunctuation'/>
     <exports symbol='xmlUCSIsCJKUnifiedIdeographs'/>
     <exports symbol='xmlUCSIsCJKUnifiedIdeographsExtensionA'/>
     <exports symbol='xmlUCSIsCJKUnifiedIdeographsExtensionB'/>
     <exports symbol='xmlUCSIsCat'/>
     <exports symbol='xmlUCSIsCatC'/>
     <exports symbol='xmlUCSIsCatCc'/>
     <exports symbol='xmlUCSIsCatCf'/>
     <exports symbol='xmlUCSIsCatCo'/>
     <exports symbol='xmlUCSIsCatCs'/>
     <exports symbol='xmlUCSIsCatL'/>
     <exports symbol='xmlUCSIsCatLl'/>
     <exports symbol='xmlUCSIsCatLm'/>
     <exports symbol='xmlUCSIsCatLo'/>
     <exports symbol='xmlUCSIsCatLt'/>
     <exports symbol='xmlUCSIsCatLu'/>
     <exports symbol='xmlUCSIsCatM'/>
     <exports symbol='xmlUCSIsCatMc'/>
     <exports symbol='xmlUCSIsCatMe'/>
     <exports symbol='xmlUCSIsCatMn'/>
     <exports symbol='xmlUCSIsCatN'/>
     <exports symbol='xmlUCSIsCatNd'/>
     <exports symbol='xmlUCSIsCatNl'/>
     <exports symbol='xmlUCSIsCatNo'/>
     <exports symbol='xmlUCSIsCatP'/>
     <exports symbol='xmlUCSIsCatPc'/>
     <exports symbol='xmlUCSIsCatPd'/>
     <exports symbol='xmlUCSIsCatPe'/>
     <exports symbol='xmlUCSIsCatPf'/>
     <exports symbol='xmlUCSIsCatPi'/>
     <exports symbol='xmlUCSIsCatPo'/>
     <exports symbol='xmlUCSIsCatPs'/>
     <exports symbol='xmlUCSIsCatS'/>
     <exports symbol='xmlUCSIsCatSc'/>
     <exports symbol='xmlUCSIsCatSk'/>
     <exports symbol='xmlUCSIsCatSm'/>
     <exports symbol='xmlUCSIsCatSo'/>
     <exports symbol='xmlUCSIsCatZ'/>
     <exports symbol='xmlUCSIsCatZl'/>
     <exports symbol='xmlUCSIsCatZp'/>
     <exports symbol='xmlUCSIsCatZs'/>
     <exports symbol='xmlUCSIsCherokee'/>
     <exports symbol='xmlUCSIsCombiningDiacriticalMarks'/>
     <exports symbol='xmlUCSIsCombiningHalfMarks'/>
     <exports symbol='xmlUCSIsCombiningMarksforSymbols'/>
     <exports symbol='xmlUCSIsControlPictures'/>
     <exports symbol='xmlUCSIsCurrencySymbols'/>
     <exports symbol='xmlUCSIsCyrillic'/>
     <exports symbol='xmlUCSIsDeseret'/>
     <exports symbol='xmlUCSIsDevanagari'/>
     <exports symbol='xmlUCSIsDingbats'/>
     <exports symbol='xmlUCSIsEnclosedAlphanumerics'/>
     <exports symbol='xmlUCSIsEnclosedCJKLettersandMonths'/>
     <exports symbol='xmlUCSIsEthiopic'/>
     <exports symbol='xmlUCSIsGeneralPunctuation'/>
     <exports symbol='xmlUCSIsGeometricShapes'/>
     <exports symbol='xmlUCSIsGeorgian'/>
     <exports symbol='xmlUCSIsGothic'/>
     <exports symbol='xmlUCSIsGreek'/>
     <exports symbol='xmlUCSIsGreekExtended'/>
     <exports symbol='xmlUCSIsGujarati'/>
     <exports symbol='xmlUCSIsGurmukhi'/>
     <exports symbol='xmlUCSIsHalfwidthandFullwidthForms'/>
     <exports symbol='xmlUCSIsHangulCompatibilityJamo'/>
     <exports symbol='xmlUCSIsHangulJamo'/>
     <exports symbol='xmlUCSIsHangulSyllables'/>
     <exports symbol='xmlUCSIsHebrew'/>
     <exports symbol='xmlUCSIsHighPrivateUseSurrogates'/>
     <exports symbol='xmlUCSIsHighSurrogates'/>
     <exports symbol='xmlUCSIsHiragana'/>
     <exports symbol='xmlUCSIsIPAExtensions'/>
     <exports symbol='xmlUCSIsIdeographicDescriptionCharacters'/>
     <exports symbol='xmlUCSIsKanbun'/>
     <exports symbol='xmlUCSIsKangxiRadicals'/>
     <exports symbol='xmlUCSIsKannada'/>
     <exports symbol='xmlUCSIsKatakana'/>
     <exports symbol='xmlUCSIsKhmer'/>
     <exports symbol='xmlUCSIsLao'/>
     <exports symbol='xmlUCSIsLatin1Supplement'/>
     <exports symbol='xmlUCSIsLatinExtendedA'/>
     <exports symbol='xmlUCSIsLatinExtendedAdditional'/>
     <exports symbol='xmlUCSIsLatinExtendedB'/>
     <exports symbol='xmlUCSIsLetterlikeSymbols'/>
     <exports symbol='xmlUCSIsLowSurrogates'/>
     <exports symbol='xmlUCSIsMalayalam'/>
     <exports symbol='xmlUCSIsMathematicalAlphanumericSymbols'/>
     <exports symbol='xmlUCSIsMathematicalOperators'/>
     <exports symbol='xmlUCSIsMiscellaneousSymbols'/>
     <exports symbol='xmlUCSIsMiscellaneousTechnical'/>
     <exports symbol='xmlUCSIsMongolian'/>
     <exports symbol='xmlUCSIsMusicalSymbols'/>
     <exports symbol='xmlUCSIsMyanmar'/>
     <exports symbol='xmlUCSIsNumberForms'/>
     <exports symbol='xmlUCSIsOgham'/>
     <exports symbol='xmlUCSIsOldItalic'/>
     <exports symbol='xmlUCSIsOpticalCharacterRecognition'/>
     <exports symbol='xmlUCSIsOriya'/>
     <exports symbol='xmlUCSIsPrivateUse'/>
     <exports symbol='xmlUCSIsRunic'/>
     <exports symbol='xmlUCSIsSinhala'/>
     <exports symbol='xmlUCSIsSmallFormVariants'/>
     <exports symbol='xmlUCSIsSpacingModifierLetters'/>
     <exports symbol='xmlUCSIsSpecials'/>
     <exports symbol='xmlUCSIsSuperscriptsandSubscripts'/>
     <exports symbol='xmlUCSIsSyriac'/>
     <exports symbol='xmlUCSIsTags'/>
     <exports symbol='xmlUCSIsTamil'/>
     <exports symbol='xmlUCSIsTelugu'/>
     <exports symbol='xmlUCSIsThaana'/>
     <exports symbol='xmlUCSIsThai'/>
     <exports symbol='xmlUCSIsTibetan'/>
     <exports symbol='xmlUCSIsUnifiedCanadianAboriginalSyllabics'/>
     <exports symbol='xmlUCSIsYiRadicals'/>
     <exports symbol='xmlUCSIsYiSyllables'/>
    </file>
    <file name='uri'>
     <exports symbol='_xmlURI'/>
     <exports symbol='xmlBuildURI'/>
     <exports symbol='xmlCreateURI'/>
     <exports symbol='xmlFreeURI'/>
     <exports symbol='xmlNormalizeURIPath'/>
     <exports symbol='xmlParseURI'/>
     <exports symbol='xmlParseURIReference'/>
     <exports symbol='xmlPrintURI'/>
     <exports symbol='xmlSaveUri'/>
     <exports symbol='xmlURI'/>
     <exports symbol='xmlURIEscape'/>
     <exports symbol='xmlURIEscapeStr'/>
     <exports symbol='xmlURIPtr'/>
     <exports symbol='xmlURIUnescapeString'/>
    </file>
    <file name='encoding'>
     <exports symbol='UTF8Toisolat1'/>
     <exports symbol='XML_CHAR_ENCODING_2022_JP'/>
     <exports symbol='XML_CHAR_ENCODING_8859_1'/>
     <exports symbol='XML_CHAR_ENCODING_8859_2'/>
     <exports symbol='XML_CHAR_ENCODING_8859_3'/>
     <exports symbol='XML_CHAR_ENCODING_8859_4'/>
     <exports symbol='XML_CHAR_ENCODING_8859_5'/>
     <exports symbol='XML_CHAR_ENCODING_8859_6'/>
     <exports symbol='XML_CHAR_ENCODING_8859_7'/>
     <exports symbol='XML_CHAR_ENCODING_8859_8'/>
     <exports symbol='XML_CHAR_ENCODING_8859_9'/>
     <exports symbol='XML_CHAR_ENCODING_ASCII'/>
     <exports symbol='XML_CHAR_ENCODING_EBCDIC'/>
     <exports symbol='XML_CHAR_ENCODING_ERROR'/>
     <exports symbol='XML_CHAR_ENCODING_EUC_JP'/>
     <exports symbol='XML_CHAR_ENCODING_NONE'/>
     <exports symbol='XML_CHAR_ENCODING_SHIFT_JIS'/>
     <exports symbol='XML_CHAR_ENCODING_UCS2'/>
     <exports symbol='XML_CHAR_ENCODING_UCS4BE'/>
     <exports symbol='XML_CHAR_ENCODING_UCS4LE'/>
     <exports symbol='XML_CHAR_ENCODING_UCS4_2143'/>
     <exports symbol='XML_CHAR_ENCODING_UCS4_3412'/>
     <exports symbol='XML_CHAR_ENCODING_UTF16BE'/>
     <exports symbol='XML_CHAR_ENCODING_UTF16LE'/>
     <exports symbol='XML_CHAR_ENCODING_UTF8'/>
     <exports symbol='_xmlCharEncodingHandler'/>
     <exports symbol='isolat1ToUTF8'/>
     <exports symbol='xmlAddEncodingAlias'/>
     <exports symbol='xmlCharEncCloseFunc'/>
     <exports symbol='xmlCharEncFirstLine'/>
     <exports symbol='xmlCharEncInFunc'/>
     <exports symbol='xmlCharEncOutFunc'/>
     <exports symbol='xmlCharEncoding'/>
     <exports symbol='xmlCharEncodingHandler'/>
     <exports symbol='xmlCharEncodingHandlerPtr'/>
     <exports symbol='xmlCharEncodingInputFunc'/>
     <exports symbol='xmlCharEncodingOutputFunc'/>
     <exports symbol='xmlCheckUTF8'/>
     <exports symbol='xmlCleanupCharEncodingHandlers'/>
     <exports symbol='xmlCleanupEncodingAliases'/>
     <exports symbol='xmlDelEncodingAlias'/>
     <exports symbol='xmlDetectCharEncoding'/>
     <exports symbol='xmlFindCharEncodingHandler'/>
     <exports symbol='xmlGetCharEncodingHandler'/>
     <exports symbol='xmlGetCharEncodingName'/>
     <exports symbol='xmlGetEncodingAlias'/>
     <exports symbol='xmlGetUTF8Char'/>
     <exports symbol='xmlInitCharEncodingHandlers'/>
     <exports symbol='xmlNewCharEncodingHandler'/>
     <exports symbol='xmlParseCharEncoding'/>
     <exports symbol='xmlRegisterCharEncodingHandler'/>
     <exports symbol='xmlUTF8Strlen'/>
     <exports symbol='xmlUTF8Strloc'/>
     <exports symbol='xmlUTF8Strndup'/>
     <exports symbol='xmlUTF8Strpos'/>
     <exports symbol='xmlUTF8Strsize'/>
     <exports symbol='xmlUTF8Strsub'/>
    </file>
  </files>
  <symbols>
    <macro name='ATTRIBUTE_UNUSED' file='xmlversion'>
      <info>Macro used to signal to GCC unused function parameters</info>
    </macro>
    <macro name='BAD_CAST' file='tree'>
      <info>Macro to cast a string to an xmlChar * when one know its safe.</info>
    </macro>
    <macro name='BASE_BUFFER_SIZE' file='tree'>
      <info>default buffer size 4000.</info>
    </macro>
    <macro name='CAST_TO_BOOLEAN' file='xpathInternals'>
      <info>Macro to try to cast the value on the top of the XPath stack to a boolean.</info>
    </macro>
    <macro name='CAST_TO_NUMBER' file='xpathInternals'>
      <info>Macro to try to cast the value on the top of the XPath stack to a number.</info>
    </macro>
    <macro name='CAST_TO_STRING' file='xpathInternals'>
      <info>Macro to try to cast the value on the top of the XPath stack to a string.</info>
    </macro>
    <macro name='CHECK_ARITY' file='xpathInternals'>
      <info>Macro to check that the number of args passed to an XPath function matches.</info>
      <arg name='x' info='the number of expected args'/>
    </macro>
    <macro name='CHECK_ERROR' file='xpathInternals'>
      <info>Macro to return from the function if an XPath error was detected.</info>
    </macro>
    <macro name='CHECK_ERROR0' file='xpathInternals'>
      <info>Macro to return 0 from the function if an XPath error was detected.</info>
    </macro>
    <macro name='CHECK_TYPE' file='xpathInternals'>
      <info>Macro to check that the value on top of the XPath stack is of a given type.</info>
      <arg name='typeval' info='the XPath type'/>
    </macro>
    <macro name='CHECK_TYPE0' file='xpathInternals'>
      <info>Macro to check that the value on top of the XPath stack is of a given type. Return(0) in case of failure</info>
      <arg name='typeval' info='the XPath type'/>
    </macro>
    <macro name='DEBUG_MEMORY' file='xmlmemory'>
      <info>DEBUG_MEMORY replaces the allocator with a collect and debug shell to the libc allocator. DEBUG_MEMORY should only be activated when debugging libxml i.e. if libxml has been configured with --with-debug-mem too. #define DEBUG_MEMORY_FREED #define DEBUG_MEMORY_LOCATION</info>
    </macro>
    <macro name='DEBUG_MEMORY_LOCATION' file='xmlversion'>
      <info>Whether the memory debugging is configured in</info>
    </macro>
    <macro name='HTML_COMMENT_NODE' file='HTMLtree'>
      <info>Macro. A comment in a HTML document is really implemented the same way as a comment in an XML document.</info>
    </macro>
    <macro name='HTML_ENTITY_REF_NODE' file='HTMLtree'>
      <info>Macro. An entity reference in a HTML document is really implemented the same way as an entity reference in an XML document.</info>
    </macro>
    <macro name='HTML_PI_NODE' file='HTMLtree'>
      <info>Macro. A processing instruction in a HTML document is really implemented the same way as a processing instruction in an XML document.</info>
    </macro>
    <macro name='HTML_PRESERVE_NODE' file='HTMLtree'>
      <info>Macro. A preserved node in a HTML document is really implemented the same way as a CDATA section in an XML document.</info>
    </macro>
    <macro name='HTML_TEXT_NODE' file='HTMLtree'>
      <info>Macro. A text node in a HTML document is really implemented the same way as a text node in an XML document.</info>
    </macro>
    <macro name='INPUT_CHUNK' file='parserInternals'>
      <info>The parser tries to always have that amount of input ready. One of the point is providing context when reporting errors.</info>
    </macro>
    <macro name='IS_BASECHAR' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:  [85] BaseChar ::= ... long list see REC ...</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_BLANK' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:  [3] S ::= (#x20 | #x9 | #xD | #xA)+</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_CHAR' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:  [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_COMBINING' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:  [87] CombiningChar ::= ... long list see REC ...</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_DIGIT' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:  [88] Digit ::= ... long list see REC ...</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_EXTENDER' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:   [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_IDEOGRAPHIC' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:   [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_LETTER' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:   [84] Letter ::= BaseChar | Ideographic</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='IS_PUBIDCHAR' file='parserInternals'>
      <info>Macro to check the following production in the XML spec:   [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-&apos;()+,./:=?;!*#@$_%]</info>
      <arg name='c' info='an UNICODE value (int)'/>
    </macro>
    <macro name='LIBXML_AUTOMATA_ENABLED' file='xmlversion'>
    </macro>
    <macro name='LIBXML_C14N_ENABLED' file='xmlversion'>
      <info>Whether the Canonicalization support is configured in</info>
    </macro>
    <macro name='LIBXML_CATALOG_ENABLED' file='xmlversion'>
      <info>Whether the Catalog support is configured in</info>
    </macro>
    <macro name='LIBXML_DEBUG_ENABLED' file='xmlversion'>
      <info>Whether Debugging module is configured in</info>
    </macro>
    <macro name='LIBXML_DLL_IMPORT' file='xmlversion'>
      <info>Used on Windows (MS C compiler only) to declare a variable as imported from the library. This macro should be empty when compiling libxml itself. It should expand to __declspec(dllimport) when the client code includes this header, and that only if the client links dynamically against libxml. For this to work, we need three macros. One tells us which compiler is being used and luckily the compiler defines such a thing: _MSC_VER. The second macro tells us if we are compiling libxml or the client code and we define the macro IN_LIBXML on the compiler&apos;s command line for this purpose. The third macro, LIBXML_STATIC, must be defined by any client code which links against libxml statically.</info>
    </macro>
    <macro name='LIBXML_DOCB_ENABLED' file='xmlversion'>
      <info>Whether the SGML Docbook support is configured in</info>
    </macro>
    <macro name='LIBXML_DOTTED_VERSION' file='xmlversion'>
      <info>the version string like &quot;1.2.3&quot;</info>
    </macro>
    <macro name='LIBXML_FTP_ENABLED' file='xmlversion'>
      <info>Whether the FTP support is configured in</info>
    </macro>
    <macro name='LIBXML_HTML_ENABLED' file='xmlversion'>
      <info>Whether the HTML support is configured in</info>
    </macro>
    <macro name='LIBXML_HTTP_ENABLED' file='xmlversion'>
      <info>Whether the HTTP support is configured in</info>
    </macro>
    <macro name='LIBXML_ICONV_ENABLED' file='xmlversion'>
      <info>Whether iconv support is available</info>
    </macro>
    <macro name='LIBXML_REGEXP_ENABLED' file='xmlversion'>
    </macro>
    <macro name='LIBXML_SCHEMAS_ENABLED' file='xmlversion'>
    </macro>
    <macro name='LIBXML_TEST_VERSION' file='xmlversion'>
      <info>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</info>
    </macro>
    <macro name='LIBXML_THREAD_ENABLED' file='xmlversion'>
      <info>Whether the thread support is configured in</info>
    </macro>
    <macro name='LIBXML_UNICODE_ENABLED' file='xmlversion'>
    </macro>
    <macro name='LIBXML_VERSION' file='xmlversion'>
      <info>the version number: 1.2.3 value is 1002003</info>
    </macro>
    <macro name='LIBXML_VERSION_STRING' file='xmlversion'>
      <info>the version number string, 1.2.3 value is &quot;1002003&quot;</info>
    </macro>
    <macro name='LIBXML_XINCLUDE_ENABLED' file='xmlversion'>
      <info>Whether XInclude is configured in</info>
    </macro>
    <macro name='LIBXML_XPATH_ENABLED' file='xmlversion'>
      <info>Whether XPath is configured in</info>
    </macro>
    <macro name='LIBXML_XPTR_ENABLED' file='xmlversion'>
      <info>Whether XPointer is configured in</info>
    </macro>
    <macro name='MOVETO_ENDTAG' file='parserInternals'>
      <info>Skips to the next &apos;&gt;&apos; char.</info>
      <arg name='p' info='and UTF8 string pointer'/>
    </macro>
    <macro name='MOVETO_STARTTAG' file='parserInternals'>
      <info>Skips to the next &apos;&lt;&apos; char.</info>
      <arg name='p' info='and UTF8 string pointer'/>
    </macro>
    <macro name='SKIP_EOL' file='parserInternals'>
      <info>Skips the end of line chars.</info>
      <arg name='p' info='and UTF8 string pointer'/>
    </macro>
    <macro name='WITHOUT_TRIO' file='xmlversion'>
      <info>defined if the trio support should not be configured in</info>
    </macro>
    <macro name='WITH_TRIO' file='xmlversion'>
    </macro>
    <macro name='XML_CATALOGS_NAMESPACE' file='catalog'>
      <info>The namespace for the XML Catalogs elements.</info>
    </macro>
    <macro name='XML_CATALOG_PI' file='catalog'>
      <info>The specific XML Catalog Processing Instuction name.</info>
    </macro>
    <macro name='XML_COMPLETE_ATTRS' file='parser'>
      <info>Bit in the loadsubset context field to tell to do complete the elements attributes lists with the ones defaulted from the DTDs. Use it to initialize xmlLoadExtDtdDefaultValue.</info>
    </macro>
    <macro name='XML_DEFAULT_VERSION' file='parser'>
      <info>The default version of XML used: 1.0</info>
    </macro>
    <macro name='XML_DETECT_IDS' file='parser'>
      <info>Bit in the loadsubset context field to tell to do ID/REFs lookups. Use it to initialize xmlLoadExtDtdDefaultValue.</info>
    </macro>
    <macro name='XML_GET_CONTENT' file='tree'>
      <info>Macro to extract the content pointer of a node.</info>
    </macro>
    <macro name='XML_GET_LINE' file='tree'>
      <info>Macro to extract the line number of an element node. This will work only if line numbering is activated by calling xmlLineNumbersDefault(1) before parsing.</info>
    </macro>
    <macro name='XML_LOCAL_NAMESPACE' file='tree'>
      <info>A namespace declaration node.</info>
    </macro>
    <macro name='XML_MAX_NAMELEN' file='parserInternals'>
      <info>Identifiers can be longer, but this will be more costly at runtime.</info>
    </macro>
    <macro name='XML_SUBSTITUTE_BOTH' file='parserInternals'>
      <info>Both general and parameter entities need to be substituted.</info>
    </macro>
    <macro name='XML_SUBSTITUTE_NONE' file='parserInternals'>
      <info>If no entities need to be substituted.</info>
    </macro>
    <macro name='XML_SUBSTITUTE_PEREF' file='parserInternals'>
      <info>Whether parameter entities need to be substituted.</info>
    </macro>
    <macro name='XML_SUBSTITUTE_REF' file='parserInternals'>
      <info>Whether general entities need to be substituted.</info>
    </macro>
    <macro name='XML_XML_NAMESPACE' file='tree'>
      <info>This is the namespace for the special xml: prefix predefined in the XML Namespace specification.</info>
    </macro>
    <macro name='XP_ERROR' file='xpathInternals'>
      <info>Macro to raise an XPath error and return.</info>
      <arg name='X' info='the error code'/>
    </macro>
    <macro name='XP_ERROR0' file='xpathInternals'>
      <info>Macro to raise an XPath error and return 0.</info>
      <arg name='X' info='the error code'/>
    </macro>
    <macro name='_DEBUG_MEMORY_ALLOC_' file='xmlmemory'>
    </macro>
    <macro name='xmlChildrenNode' file='tree'>
      <info>Macro for compatibility naming layer with libxml1.</info>
    </macro>
    <macro name='xmlRootNode' file='tree'>
      <info>Macro for compatibility naming layer with libxml1.</info>
    </macro>
    <macro name='xmlXPathCheckError' file='xpathInternals'>
      <info>Check if an XPath error was raised.  Returns true if an error has been raised, false otherwise.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathEmptyNodeSet' file='xpathInternals'>
      <info>Empties a node-set.</info>
      <arg name='ns' info='a node-set'/>
    </macro>
    <macro name='xmlXPathGetContextNode' file='xpathInternals'>
      <info>Get the context node of an XPath context.  Returns the context node.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathGetDocument' file='xpathInternals'>
      <info>Get the document of an XPath context.  Returns the context document.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathGetError' file='xpathInternals'>
      <info>Get the error code of an XPath context.  Returns the context error.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathNodeSetGetLength' file='xpath'>
      <info>Implement a functionality similar to the DOM NodeList.length.  Returns the number of nodes in the node-set.</info>
      <arg name='ns' info='a node-set'/>
    </macro>
    <macro name='xmlXPathNodeSetIsEmpty' file='xpath'>
      <info>Checks whether @ns is empty or not.  Returns %TRUE if @ns is an empty node-set.</info>
      <arg name='ns' info='a node-set'/>
    </macro>
    <macro name='xmlXPathNodeSetItem' file='xpath'>
      <info>Implements a functionality similar to the DOM NodeList.item().  Returns the xmlNodePtr at the given @index in @ns or NULL if @index is out of range (0 to length-1)</info>
      <arg name='ns' info='a node-set'/>
      <arg name='index' info='index of a node in the set'/>
    </macro>
    <macro name='xmlXPathReturnBoolean' file='xpathInternals'>
      <info>Pushes the boolean @val on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
      <arg name='val' info='a boolean'/>
    </macro>
    <macro name='xmlXPathReturnEmptyNodeSet' file='xpathInternals'>
      <info>Pushes an empty node-set on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathReturnEmptyString' file='xpathInternals'>
      <info>Pushes an empty string on the stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathReturnExternal' file='xpathInternals'>
      <info>Pushes user data on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
      <arg name='val' info='user data'/>
    </macro>
    <macro name='xmlXPathReturnFalse' file='xpathInternals'>
      <info>Pushes false on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathReturnNodeSet' file='xpathInternals'>
      <info>Pushes the node-set @ns on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
      <arg name='ns' info='a node-set'/>
    </macro>
    <macro name='xmlXPathReturnNumber' file='xpathInternals'>
      <info>Pushes the double @val on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
      <arg name='val' info='a double'/>
    </macro>
    <macro name='xmlXPathReturnString' file='xpathInternals'>
      <info>Pushes the string @str on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
      <arg name='str' info='a string'/>
    </macro>
    <macro name='xmlXPathReturnTrue' file='xpathInternals'>
      <info>Pushes true on the context stack.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathSetArityError' file='xpathInternals'>
      <info>Raises an XPATH_INVALID_ARITY error.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathSetError' file='xpathInternals'>
      <info>Raises an error.</info>
      <arg name='ctxt' info='an XPath parser context'/>
      <arg name='err' info='an xmlXPathError code'/>
    </macro>
    <macro name='xmlXPathSetTypeError' file='xpathInternals'>
      <info>Raises an XPATH_INVALID_TYPE error.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathStackIsExternal' file='xpathInternals'>
      <info>Checks if the current value on the XPath stack is an external object.  Returns true if the current object on the stack is an external object.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <macro name='xmlXPathStackIsNodeSet' file='xpathInternals'>
      <info>Check if the current value on the XPath stack is a node set or an XSLT value tree.  Returns true if the current object on the stack is a node-set.</info>
      <arg name='ctxt' info='an XPath parser context'/>
    </macro>
    <enum name='XLINK_ACTUATE_AUTO' file='xlink' value='1' type='xlinkActuate'/>
    <enum name='XLINK_ACTUATE_NONE' file='xlink' value='0' type='xlinkActuate'/>
    <enum name='XLINK_ACTUATE_ONREQUEST' file='xlink' value='2' type='xlinkActuate'/>
    <enum name='XLINK_SHOW_EMBED' file='xlink' value='2' type='xlinkShow'/>
    <enum name='XLINK_SHOW_NEW' file='xlink' value='1' type='xlinkShow'/>
    <enum name='XLINK_SHOW_NONE' file='xlink' value='0' type='xlinkShow'/>
    <enum name='XLINK_SHOW_REPLACE' file='xlink' value='3' type='xlinkShow'/>
    <enum name='XLINK_TYPE_EXTENDED' file='xlink' value='2' type='xlinkType'/>
    <enum name='XLINK_TYPE_EXTENDED_SET' file='xlink' value='3' type='xlinkType'/>
    <enum name='XLINK_TYPE_NONE' file='xlink' value='0' type='xlinkType'/>
    <enum name='XLINK_TYPE_SIMPLE' file='xlink' value='1' type='xlinkType'/>
    <enum name='XML_ATTRIBUTE_CDATA' file='tree' value='1' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_DECL' file='tree' value='16' type='xmlElementType'/>
    <enum name='XML_ATTRIBUTE_ENTITIES' file='tree' value='6' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_ENTITY' file='tree' value='5' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_ENUMERATION' file='tree' value='9' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_FIXED' file='tree' value='4' type='xmlAttributeDefault'/>
    <enum name='XML_ATTRIBUTE_ID' file='tree' value='2' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_IDREF' file='tree' value='3' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_IDREFS' file='tree' value='4' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_IMPLIED' file='tree' value='3' type='xmlAttributeDefault'/>
    <enum name='XML_ATTRIBUTE_NMTOKEN' file='tree' value='7' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_NMTOKENS' file='tree' value='8' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_NODE' file='tree' value='2' type='xmlElementType'/>
    <enum name='XML_ATTRIBUTE_NONE' file='tree' value='1' type='xmlAttributeDefault'/>
    <enum name='XML_ATTRIBUTE_NOTATION' file='tree' value='10' type='xmlAttributeType'/>
    <enum name='XML_ATTRIBUTE_REQUIRED' file='tree' value='2' type='xmlAttributeDefault'/>
    <enum name='XML_BUFFER_ALLOC_DOUBLEIT' file='tree' value='1' type='xmlBufferAllocationScheme'/>
    <enum name='XML_BUFFER_ALLOC_EXACT' file='tree' value='2' type='xmlBufferAllocationScheme'/>
    <enum name='XML_CATA_ALLOW_ALL' file='catalog' value='3' type='xmlCatalogAllow'/>
    <enum name='XML_CATA_ALLOW_DOCUMENT' file='catalog' value='2' type='xmlCatalogAllow'/>
    <enum name='XML_CATA_ALLOW_GLOBAL' file='catalog' value='1' type='xmlCatalogAllow'/>
    <enum name='XML_CATA_ALLOW_NONE' file='catalog' value='0' type='xmlCatalogAllow'/>
    <enum name='XML_CATA_PREFER_NONE' file='catalog' value='0' type='xmlCatalogPrefer'/>
    <enum name='XML_CATA_PREFER_PUBLIC' file='catalog' value='1' type='xmlCatalogPrefer'/>
    <enum name='XML_CATA_PREFER_SYSTEM' file='catalog' value='2' type='xmlCatalogPrefer'/>
    <enum name='XML_CDATA_SECTION_NODE' file='tree' value='4' type='xmlElementType'/>
    <enum name='XML_CHAR_ENCODING_2022_JP' file='encoding' value='19' type='xmlCharEncoding' info='ISO-2022-JP'/>
    <enum name='XML_CHAR_ENCODING_8859_1' file='encoding' value='10' type='xmlCharEncoding' info='ISO-8859-1 ISO Latin 1'/>
    <enum name='XML_CHAR_ENCODING_8859_2' file='encoding' value='11' type='xmlCharEncoding' info='ISO-8859-2 ISO Latin 2'/>
    <enum name='XML_CHAR_ENCODING_8859_3' file='encoding' value='12' type='xmlCharEncoding' info='ISO-8859-3'/>
    <enum name='XML_CHAR_ENCODING_8859_4' file='encoding' value='13' type='xmlCharEncoding' info='ISO-8859-4'/>
    <enum name='XML_CHAR_ENCODING_8859_5' file='encoding' value='14' type='xmlCharEncoding' info='ISO-8859-5'/>
    <enum name='XML_CHAR_ENCODING_8859_6' file='encoding' value='15' type='xmlCharEncoding' info='ISO-8859-6'/>
    <enum name='XML_CHAR_ENCODING_8859_7' file='encoding' value='16' type='xmlCharEncoding' info='ISO-8859-7'/>
    <enum name='XML_CHAR_ENCODING_8859_8' file='encoding' value='17' type='xmlCharEncoding' info='ISO-8859-8'/>
    <enum name='XML_CHAR_ENCODING_8859_9' file='encoding' value='18' type='xmlCharEncoding' info='ISO-8859-9'/>
    <enum name='XML_CHAR_ENCODING_ASCII' file='encoding' value='22' type='xmlCharEncoding' info=' pure ASCII'/>
    <enum name='XML_CHAR_ENCODING_EBCDIC' file='encoding' value='6' type='xmlCharEncoding' info='EBCDIC uh!'/>
    <enum name='XML_CHAR_ENCODING_ERROR' file='encoding' value='-1' type='xmlCharEncoding' info='No char encoding detected'/>
    <enum name='XML_CHAR_ENCODING_EUC_JP' file='encoding' value='21' type='xmlCharEncoding' info='EUC-JP'/>
    <enum name='XML_CHAR_ENCODING_NONE' file='encoding' value='0' type='xmlCharEncoding' info='No char encoding detected'/>
    <enum name='XML_CHAR_ENCODING_SHIFT_JIS' file='encoding' value='20' type='xmlCharEncoding' info='Shift_JIS'/>
    <enum name='XML_CHAR_ENCODING_UCS2' file='encoding' value='9' type='xmlCharEncoding' info='UCS-2'/>
    <enum name='XML_CHAR_ENCODING_UCS4BE' file='encoding' value='5' type='xmlCharEncoding' info='UCS-4 big endian'/>
    <enum name='XML_CHAR_ENCODING_UCS4LE' file='encoding' value='4' type='xmlCharEncoding' info='UCS-4 little endian'/>
    <enum name='XML_CHAR_ENCODING_UCS4_2143' file='encoding' value='7' type='xmlCharEncoding' info='UCS-4 unusual ordering'/>
    <enum name='XML_CHAR_ENCODING_UCS4_3412' file='encoding' value='8' type='xmlCharEncoding' info='UCS-4 unusual ordering'/>
    <enum name='XML_CHAR_ENCODING_UTF16BE' file='encoding' value='3' type='xmlCharEncoding' info='UTF-16 big endian'/>
    <enum name='XML_CHAR_ENCODING_UTF16LE' file='encoding' value='2' type='xmlCharEncoding' info='UTF-16 little endian'/>
    <enum name='XML_CHAR_ENCODING_UTF8' file='encoding' value='1' type='xmlCharEncoding' info='UTF-8'/>
    <enum name='XML_COMMENT_NODE' file='tree' value='8' type='xmlElementType'/>
    <enum name='XML_DOCB_DOCUMENT_NODE' file='tree' value='21' type='xmlElementType'/>
    <enum name='XML_DOCUMENT_FRAG_NODE' file='tree' value='11' type='xmlElementType'/>
    <enum name='XML_DOCUMENT_NODE' file='tree' value='9' type='xmlElementType'/>
    <enum name='XML_DOCUMENT_TYPE_NODE' file='tree' value='10' type='xmlElementType'/>
    <enum name='XML_DTD_NODE' file='tree' value='14' type='xmlElementType'/>
    <enum name='XML_ELEMENT_CONTENT_ELEMENT' file='tree' value='2' type='xmlElementContentType'/>
    <enum name='XML_ELEMENT_CONTENT_MULT' file='tree' value='3' type='xmlElementContentOccur'/>
    <enum name='XML_ELEMENT_CONTENT_ONCE' file='tree' value='1' type='xmlElementContentOccur'/>
    <enum name='XML_ELEMENT_CONTENT_OPT' file='tree' value='2' type='xmlElementContentOccur'/>
    <enum name='XML_ELEMENT_CONTENT_OR' file='tree' value='4' type='xmlElementContentType'/>
    <enum name='XML_ELEMENT_CONTENT_PCDATA' file='tree' value='1' type='xmlElementContentType'/>
    <enum name='XML_ELEMENT_CONTENT_PLUS' file='tree' value='4' type='xmlElementContentOccur'/>
    <enum name='XML_ELEMENT_CONTENT_SEQ' file='tree' value='3' type='xmlElementContentType'/>
    <enum name='XML_ELEMENT_DECL' file='tree' value='15' type='xmlElementType'/>
    <enum name='XML_ELEMENT_NODE' file='tree' value='1' type='xmlElementType'/>
    <enum name='XML_ELEMENT_TYPE_ANY' file='tree' value='2' type='xmlElementTypeVal'/>
    <enum name='XML_ELEMENT_TYPE_ELEMENT' file='tree' value='4' type='xmlElementTypeVal'/>
    <enum name='XML_ELEMENT_TYPE_EMPTY' file='tree' value='1' type='xmlElementTypeVal'/>
    <enum name='XML_ELEMENT_TYPE_MIXED' file='tree' value='3' type='xmlElementTypeVal'/>
    <enum name='XML_ELEMENT_TYPE_UNDEFINED' file='tree' value='0' type='xmlElementTypeVal'/>
    <enum name='XML_ENTITY_DECL' file='tree' value='17' type='xmlElementType'/>
    <enum name='XML_ENTITY_NODE' file='tree' value='6' type='xmlElementType'/>
    <enum name='XML_ENTITY_REF_NODE' file='tree' value='5' type='xmlElementType'/>
    <enum name='XML_ERR_ATTLIST_NOT_FINISHED' file='xmlerror' value='51' type='xmlParserErrors'/>
    <enum name='XML_ERR_ATTLIST_NOT_STARTED' file='xmlerror' value='50' type='xmlParserErrors' info='51'/>
    <enum name='XML_ERR_ATTRIBUTE_NOT_FINISHED' file='xmlerror' value='40' type='xmlParserErrors'/>
    <enum name='XML_ERR_ATTRIBUTE_NOT_STARTED' file='xmlerror' value='39' type='xmlParserErrors'/>
    <enum name='XML_ERR_ATTRIBUTE_REDEFINED' file='xmlerror' value='42' type='xmlParserErrors'/>
    <enum name='XML_ERR_ATTRIBUTE_WITHOUT_VALUE' file='xmlerror' value='41' type='xmlParserErrors'/>
    <enum name='XML_ERR_CDATA_NOT_FINISHED' file='xmlerror' value='63' type='xmlParserErrors'/>
    <enum name='XML_ERR_CHARREF_AT_EOF' file='xmlerror' value='10' type='xmlParserErrors' info='10'/>
    <enum name='XML_ERR_CHARREF_IN_DTD' file='xmlerror' value='13' type='xmlParserErrors'/>
    <enum name='XML_ERR_CHARREF_IN_EPILOG' file='xmlerror' value='12' type='xmlParserErrors'/>
    <enum name='XML_ERR_CHARREF_IN_PROLOG' file='xmlerror' value='11' type='xmlParserErrors'/>
    <enum name='XML_ERR_COMMENT_NOT_FINISHED' file='xmlerror' value='45' type='xmlParserErrors' info='45'/>
    <enum name='XML_ERR_CONDSEC_INVALID' file='xmlerror' value='83' type='xmlParserErrors' info='84'/>
    <enum name='XML_ERR_CONDSEC_NOT_FINISHED' file='xmlerror' value='59' type='xmlParserErrors'/>
    <enum name='XML_ERR_CONDSEC_NOT_STARTED' file='xmlerror' value='58' type='xmlParserErrors' info='59'/>
    <enum name='XML_ERR_DOCTYPE_NOT_FINISHED' file='xmlerror' value='61' type='xmlParserErrors' info='62'/>
    <enum name='XML_ERR_DOCUMENT_EMPTY' file='xmlerror' value='4' type='xmlParserErrors'/>
    <enum name='XML_ERR_DOCUMENT_END' file='xmlerror' value='5' type='xmlParserErrors'/>
    <enum name='XML_ERR_DOCUMENT_START' file='xmlerror' value='3' type='xmlParserErrors' info='3'/>
    <enum name='XML_ERR_ELEMCONTENT_NOT_FINISHED' file='xmlerror' value='55' type='xmlParserErrors'/>
    <enum name='XML_ERR_ELEMCONTENT_NOT_STARTED' file='xmlerror' value='54' type='xmlParserErrors' info='55'/>
    <enum name='XML_ERR_ENCODING_NAME' file='xmlerror' value='79' type='xmlParserErrors' info='80'/>
    <enum name='XML_ERR_ENTITYREF_AT_EOF' file='xmlerror' value='14' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITYREF_IN_DTD' file='xmlerror' value='17' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITYREF_IN_EPILOG' file='xmlerror' value='16' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITYREF_IN_PROLOG' file='xmlerror' value='15' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITYREF_NO_NAME' file='xmlerror' value='22' type='xmlParserErrors' info='22'/>
    <enum name='XML_ERR_ENTITYREF_SEMICOL_MISSING' file='xmlerror' value='23' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITY_BOUNDARY' file='xmlerror' value='90' type='xmlParserErrors' info='90'/>
    <enum name='XML_ERR_ENTITY_CHAR_ERROR' file='xmlerror' value='87' type='xmlParserErrors' info='88'/>
    <enum name='XML_ERR_ENTITY_IS_EXTERNAL' file='xmlerror' value='29' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITY_IS_PARAMETER' file='xmlerror' value='30' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITY_LOOP' file='xmlerror' value='89' type='xmlParserErrors' info='89'/>
    <enum name='XML_ERR_ENTITY_NOT_FINISHED' file='xmlerror' value='37' type='xmlParserErrors'/>
    <enum name='XML_ERR_ENTITY_NOT_STARTED' file='xmlerror' value='36' type='xmlParserErrors' info='36'/>
    <enum name='XML_ERR_ENTITY_PE_INTERNAL' file='xmlerror' value='88' type='xmlParserErrors' info='88'/>
    <enum name='XML_ERR_EQUAL_REQUIRED' file='xmlerror' value='75' type='xmlParserErrors'/>
    <enum name='XML_ERR_EXTRA_CONTENT' file='xmlerror' value='86' type='xmlParserErrors' info='87'/>
    <enum name='XML_ERR_EXT_ENTITY_STANDALONE' file='xmlerror' value='82' type='xmlParserErrors' info='83'/>
    <enum name='XML_ERR_EXT_SUBSET_NOT_FINISHED' file='xmlerror' value='60' type='xmlParserErrors' info='61'/>
    <enum name='XML_ERR_GT_REQUIRED' file='xmlerror' value='73' type='xmlParserErrors'/>
    <enum name='XML_ERR_HYPHEN_IN_COMMENT' file='xmlerror' value='80' type='xmlParserErrors' info='81'/>
    <enum name='XML_ERR_INTERNAL_ERROR' file='xmlerror' value='1' type='xmlParserErrors'/>
    <enum name='XML_ERR_INVALID_CHAR' file='xmlerror' value='9' type='xmlParserErrors'/>
    <enum name='XML_ERR_INVALID_CHARREF' file='xmlerror' value='8' type='xmlParserErrors'/>
    <enum name='XML_ERR_INVALID_DEC_CHARREF' file='xmlerror' value='7' type='xmlParserErrors'/>
    <enum name='XML_ERR_INVALID_ENCODING' file='xmlerror' value='81' type='xmlParserErrors' info='82'/>
    <enum name='XML_ERR_INVALID_HEX_CHARREF' file='xmlerror' value='6' type='xmlParserErrors' info='6'/>
    <enum name='XML_ERR_INVALID_URI' file='xmlerror' value='91' type='xmlParserErrors' info='91'/>
    <enum name='XML_ERR_LITERAL_NOT_FINISHED' file='xmlerror' value='44' type='xmlParserErrors'/>
    <enum name='XML_ERR_LITERAL_NOT_STARTED' file='xmlerror' value='43' type='xmlParserErrors' info='43'/>
    <enum name='XML_ERR_LTSLASH_REQUIRED' file='xmlerror' value='74' type='xmlParserErrors'/>
    <enum name='XML_ERR_LT_IN_ATTRIBUTE' file='xmlerror' value='38' type='xmlParserErrors' info='38'/>
    <enum name='XML_ERR_LT_REQUIRED' file='xmlerror' value='72' type='xmlParserErrors'/>
    <enum name='XML_ERR_MISPLACED_CDATA_END' file='xmlerror' value='62' type='xmlParserErrors' info='63'/>
    <enum name='XML_ERR_MIXED_NOT_FINISHED' file='xmlerror' value='53' type='xmlParserErrors'/>
    <enum name='XML_ERR_MIXED_NOT_STARTED' file='xmlerror' value='52' type='xmlParserErrors' info='53'/>
    <enum name='XML_ERR_NAME_REQUIRED' file='xmlerror' value='68' type='xmlParserErrors'/>
    <enum name='XML_ERR_NMTOKEN_REQUIRED' file='xmlerror' value='67' type='xmlParserErrors'/>
    <enum name='XML_ERR_NOTATION_NOT_FINISHED' file='xmlerror' value='49' type='xmlParserErrors'/>
    <enum name='XML_ERR_NOTATION_NOT_STARTED' file='xmlerror' value='48' type='xmlParserErrors' info='49'/>
    <enum name='XML_ERR_NOT_WELL_BALANCED' file='xmlerror' value='85' type='xmlParserErrors' info='86'/>
    <enum name='XML_ERR_NO_DTD' file='xmlerror' value='94' type='xmlParserErrors' info=' 94'/>
    <enum name='XML_ERR_NO_MEMORY' file='xmlerror' value='2' type='xmlParserErrors'/>
    <enum name='XML_ERR_NS_DECL_ERROR' file='xmlerror' value='35' type='xmlParserErrors'/>
    <enum name='XML_ERR_OK' file='xmlerror' value='0' type='xmlParserErrors'/>
    <enum name='XML_ERR_PCDATA_REQUIRED' file='xmlerror' value='69' type='xmlParserErrors'/>
    <enum name='XML_ERR_PEREF_AT_EOF' file='xmlerror' value='18' type='xmlParserErrors'/>
    <enum name='XML_ERR_PEREF_IN_EPILOG' file='xmlerror' value='20' type='xmlParserErrors'/>
    <enum name='XML_ERR_PEREF_IN_INT_SUBSET' file='xmlerror' value='21' type='xmlParserErrors'/>
    <enum name='XML_ERR_PEREF_IN_PROLOG' file='xmlerror' value='19' type='xmlParserErrors'/>
    <enum name='XML_ERR_PEREF_NO_NAME' file='xmlerror' value='24' type='xmlParserErrors' info='24'/>
    <enum name='XML_ERR_PEREF_SEMICOL_MISSING' file='xmlerror' value='25' type='xmlParserErrors'/>
    <enum name='XML_ERR_PI_NOT_FINISHED' file='xmlerror' value='47' type='xmlParserErrors'/>
    <enum name='XML_ERR_PI_NOT_STARTED' file='xmlerror' value='46' type='xmlParserErrors' info='47'/>
    <enum name='XML_ERR_PUBID_REQUIRED' file='xmlerror' value='71' type='xmlParserErrors'/>
    <enum name='XML_ERR_RESERVED_XML_NAME' file='xmlerror' value='64' type='xmlParserErrors' info='65'/>
    <enum name='XML_ERR_SEPARATOR_REQUIRED' file='xmlerror' value='66' type='xmlParserErrors'/>
    <enum name='XML_ERR_SPACE_REQUIRED' file='xmlerror' value='65' type='xmlParserErrors' info='66'/>
    <enum name='XML_ERR_STANDALONE_VALUE' file='xmlerror' value='78' type='xmlParserErrors' info='79'/>
    <enum name='XML_ERR_STRING_NOT_CLOSED' file='xmlerror' value='34' type='xmlParserErrors'/>
    <enum name='XML_ERR_STRING_NOT_STARTED' file='xmlerror' value='33' type='xmlParserErrors' info='33'/>
    <enum name='XML_ERR_TAG_NAME_MISMATCH' file='xmlerror' value='76' type='xmlParserErrors' info='77'/>
    <enum name='XML_ERR_TAG_NOT_FINISHED' file='xmlerror' value='77' type='xmlParserErrors'/>
    <enum name='XML_ERR_UNDECLARED_ENTITY' file='xmlerror' value='26' type='xmlParserErrors' info='26'/>
    <enum name='XML_ERR_UNKNOWN_ENCODING' file='xmlerror' value='31' type='xmlParserErrors' info='31'/>
    <enum name='XML_ERR_UNPARSED_ENTITY' file='xmlerror' value='28' type='xmlParserErrors'/>
    <enum name='XML_ERR_UNSUPPORTED_ENCODING' file='xmlerror' value='32' type='xmlParserErrors'/>
    <enum name='XML_ERR_URI_FRAGMENT' file='xmlerror' value='92' type='xmlParserErrors' info='92'/>
    <enum name='XML_ERR_URI_REQUIRED' file='xmlerror' value='70' type='xmlParserErrors'/>
    <enum name='XML_ERR_VALUE_REQUIRED' file='xmlerror' value='84' type='xmlParserErrors' info='85'/>
    <enum name='XML_ERR_XMLDECL_NOT_FINISHED' file='xmlerror' value='57' type='xmlParserErrors'/>
    <enum name='XML_ERR_XMLDECL_NOT_STARTED' file='xmlerror' value='56' type='xmlParserErrors' info='57'/>
    <enum name='XML_EXTERNAL_GENERAL_PARSED_ENTITY' file='entities' value='2' type='xmlEntityType'/>
    <enum name='XML_EXTERNAL_GENERAL_UNPARSED_ENTITY' file='entities' value='3' type='xmlEntityType'/>
    <enum name='XML_EXTERNAL_PARAMETER_ENTITY' file='entities' value='5' type='xmlEntityType'/>
    <enum name='XML_HTML_DOCUMENT_NODE' file='tree' value='13' type='xmlElementType'/>
    <enum name='XML_INTERNAL_GENERAL_ENTITY' file='entities' value='1' type='xmlEntityType'/>
    <enum name='XML_INTERNAL_PARAMETER_ENTITY' file='entities' value='4' type='xmlEntityType'/>
    <enum name='XML_INTERNAL_PREDEFINED_ENTITY' file='entities' value='6' type='xmlEntityType'/>
    <enum name='XML_NAMESPACE_DECL' file='tree' value='18' type='xmlElementType'/>
    <enum name='XML_NOTATION_NODE' file='tree' value='12' type='xmlElementType'/>
    <enum name='XML_PARSER_ATTRIBUTE_VALUE' file='parser' value='12' type='xmlParserInputState' info='within an attribute value'/>
    <enum name='XML_PARSER_CDATA_SECTION' file='parser' value='8' type='xmlParserInputState' info='within a CDATA section'/>
    <enum name='XML_PARSER_COMMENT' file='parser' value='5' type='xmlParserInputState' info='within a comment'/>
    <enum name='XML_PARSER_CONTENT' file='parser' value='7' type='xmlParserInputState' info='within the content'/>
    <enum name='XML_PARSER_DEFAULTATTRS' file='xmlreader' value='2' type='xmlParserProperties'/>
    <enum name='XML_PARSER_DTD' file='parser' value='3' type='xmlParserInputState' info='within some DTD content'/>
    <enum name='XML_PARSER_END_TAG' file='parser' value='9' type='xmlParserInputState' info='within a closing tag'/>
    <enum name='XML_PARSER_ENTITY_DECL' file='parser' value='10' type='xmlParserInputState' info='within an entity declaration'/>
    <enum name='XML_PARSER_ENTITY_VALUE' file='parser' value='11' type='xmlParserInputState' info='within an entity value in a decl'/>
    <enum name='XML_PARSER_EOF' file='parser' value='-1' type='xmlParserInputState' info='nothing is to be parsed'/>
    <enum name='XML_PARSER_EPILOG' file='parser' value='14' type='xmlParserInputState' info='the Misc* after the last end tag'/>
    <enum name='XML_PARSER_IGNORE' file='parser' value='15' type='xmlParserInputState' info='within an IGNORED section'/>
    <enum name='XML_PARSER_LOADDTD' file='xmlreader' value='1' type='xmlParserProperties'/>
    <enum name='XML_PARSER_MISC' file='parser' value='1' type='xmlParserInputState' info='Misc* before int subset'/>
    <enum name='XML_PARSER_PI' file='parser' value='2' type='xmlParserInputState' info='Within a processing instruction'/>
    <enum name='XML_PARSER_PROLOG' file='parser' value='4' type='xmlParserInputState' info='Misc* after internal subset'/>
    <enum name='XML_PARSER_PUBLIC_LITERAL' file='parser' value='16' type='xmlParserInputState' info=' within a PUBLIC value'/>
    <enum name='XML_PARSER_START' file='parser' value='0' type='xmlParserInputState' info='nothing has been parsed'/>
    <enum name='XML_PARSER_START_TAG' file='parser' value='6' type='xmlParserInputState' info='within a start tag'/>
    <enum name='XML_PARSER_SUBST_ENTITIES' file='xmlreader' value='4' type='xmlParserProperties'/>
    <enum name='XML_PARSER_SYSTEM_LITERAL' file='parser' value='13' type='xmlParserInputState' info='within a SYSTEM value'/>
    <enum name='XML_PARSER_VALIDATE' file='xmlreader' value='3' type='xmlParserProperties'/>
    <enum name='XML_PI_NODE' file='tree' value='7' type='xmlElementType'/>
    <enum name='XML_TEXT_NODE' file='tree' value='3' type='xmlElementType'/>
    <enum name='XML_WAR_CATALOG_PI' file='xmlerror' value='93' type='xmlParserErrors' info='93'/>
    <enum name='XML_WAR_UNDECLARED_ENTITY' file='xmlerror' value='27' type='xmlParserErrors'/>
    <enum name='XML_XINCLUDE_END' file='tree' value='20' type='xmlElementType'/>
    <enum name='XML_XINCLUDE_START' file='tree' value='19' type='xmlElementType'/>
    <enum name='XPATH_BOOLEAN' file='xpath' value='2' type='xmlXPathObjectType'/>
    <enum name='XPATH_ENCODING_ERROR' file='xpath' value='20' type='xmlXPathError'/>
    <enum name='XPATH_EXPRESSION_OK' file='xpath' value='0' type='xmlXPathError'/>
    <enum name='XPATH_EXPR_ERROR' file='xpath' value='7' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_ARITY' file='xpath' value='12' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_CHAR_ERROR' file='xpath' value='21' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_CTXT_POSITION' file='xpath' value='14' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_CTXT_SIZE' file='xpath' value='13' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_OPERAND' file='xpath' value='10' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_PREDICATE_ERROR' file='xpath' value='6' type='xmlXPathError'/>
    <enum name='XPATH_INVALID_TYPE' file='xpath' value='11' type='xmlXPathError'/>
    <enum name='XPATH_LOCATIONSET' file='xpath' value='7' type='xmlXPathObjectType'/>
    <enum name='XPATH_MEMORY_ERROR' file='xpath' value='15' type='xmlXPathError'/>
    <enum name='XPATH_NODESET' file='xpath' value='1' type='xmlXPathObjectType'/>
    <enum name='XPATH_NUMBER' file='xpath' value='3' type='xmlXPathObjectType'/>
    <enum name='XPATH_NUMBER_ERROR' file='xpath' value='1' type='xmlXPathError'/>
    <enum name='XPATH_POINT' file='xpath' value='5' type='xmlXPathObjectType'/>
    <enum name='XPATH_RANGE' file='xpath' value='6' type='xmlXPathObjectType'/>
    <enum name='XPATH_START_LITERAL_ERROR' file='xpath' value='3' type='xmlXPathError'/>
    <enum name='XPATH_STRING' file='xpath' value='4' type='xmlXPathObjectType'/>
    <enum name='XPATH_UNCLOSED_ERROR' file='xpath' value='8' type='xmlXPathError'/>
    <enum name='XPATH_UNDEFINED' file='xpath' value='0' type='xmlXPathObjectType'/>
    <enum name='XPATH_UNDEF_PREFIX_ERROR' file='xpath' value='19' type='xmlXPathError'/>
    <enum name='XPATH_UNDEF_VARIABLE_ERROR' file='xpath' value='5' type='xmlXPathError'/>
    <enum name='XPATH_UNFINISHED_LITERAL_ERROR' file='xpath' value='2' type='xmlXPathError'/>
    <enum name='XPATH_UNKNOWN_FUNC_ERROR' file='xpath' value='9' type='xmlXPathError'/>
    <enum name='XPATH_USERS' file='xpath' value='8' type='xmlXPathObjectType'/>
    <enum name='XPATH_VARIABLE_REF_ERROR' file='xpath' value='4' type='xmlXPathError'/>
    <enum name='XPATH_XSLT_TREE' file='xpath' value='9' type='xmlXPathObjectType' info=' An XSLT value tree, non modifiable'/>
    <enum name='XPTR_RESOURCE_ERROR' file='xpath' value='17' type='xmlXPathError'/>
    <enum name='XPTR_SUB_RESOURCE_ERROR' file='xpath' value='18' type='xmlXPathError'/>
    <enum name='XPTR_SYNTAX_ERROR' file='xpath' value='16' type='xmlXPathError'/>
    <typedef name='docbDocPtr' file='DOCBparser' type='xmlDocPtr'/>
    <typedef name='docbNodePtr' file='DOCBparser' type='xmlNodePtr'/>
    <typedef name='docbParserCtxt' file='DOCBparser' type='xmlParserCtxt'/>
    <typedef name='docbParserCtxtPtr' file='DOCBparser' type='xmlParserCtxtPtr'/>
    <typedef name='docbParserInput' file='DOCBparser' type='xmlParserInput'/>
    <typedef name='docbParserInputPtr' file='DOCBparser' type='xmlParserInputPtr'/>
    <typedef name='docbParserNodeInfo' file='DOCBparser' type='xmlParserNodeInfo'/>
    <typedef name='docbSAXHandler' file='DOCBparser' type='xmlSAXHandler'/>
    <typedef name='docbSAXHandlerPtr' file='DOCBparser' type='xmlSAXHandlerPtr'/>
    <typedef name='htmlDocPtr' file='HTMLparser' type='xmlDocPtr'/>
    <struct name='htmlElemDesc' file='HTMLparser' type='struct _htmlElemDesc'>
      <field name='name' type='const char *' info=' The tag name'/>
      <field name='startTag' type='char' info=' Whether the start tag can be implied'/>
      <field name='endTag' type='char' info=' Whether the end tag can be implied'/>
      <field name='saveEndTag' type='char' info=' Whether the end tag should be saved'/>
      <field name='empty' type='char' info=' Is this an empty element ?'/>
      <field name='depr' type='char' info=' Is this a deprecated element ?'/>
      <field name='dtd' type='char' info=' 1: only in Loose DTD, 2: only Frameset one'/>
      <field name='isinline' type='char' info=' is this a block 0 or inline 1 element'/>
      <field name='desc' type='const char *' info=' the description'/>
    </struct>
    <typedef name='htmlElemDescPtr' file='HTMLparser' type='htmlElemDesc *'/>
    <struct name='htmlEntityDesc' file='HTMLparser' type='struct _htmlEntityDesc'>
      <field name='value' type='unsigned int' info=' the UNICODE value for the character'/>
      <field name='name' type='const char *' info=' The entity name'/>
      <field name='desc' type='const char *' info=' the description'/>
    </struct>
    <typedef name='htmlEntityDescPtr' file='HTMLparser' type='htmlEntityDesc *'/>
    <typedef name='htmlNodePtr' file='HTMLparser' type='xmlNodePtr'/>
    <typedef name='htmlParserCtxt' file='HTMLparser' type='xmlParserCtxt'/>
    <typedef name='htmlParserCtxtPtr' file='HTMLparser' type='xmlParserCtxtPtr'/>
    <typedef name='htmlParserInput' file='HTMLparser' type='xmlParserInput'/>
    <typedef name='htmlParserInputPtr' file='HTMLparser' type='xmlParserInputPtr'/>
    <typedef name='htmlParserNodeInfo' file='HTMLparser' type='xmlParserNodeInfo'/>
    <typedef name='htmlSAXHandler' file='HTMLparser' type='xmlSAXHandler'/>
    <typedef name='htmlSAXHandlerPtr' file='HTMLparser' type='xmlSAXHandlerPtr'/>
    <typedef name='xlinkActuate' file='xlink' type='enum'/>
    <typedef name='xlinkHRef' file='xlink' type='xmlChar *'/>
    <struct name='xlinkHandler' file='xlink' type='struct _xlinkHandler'>
      <field name='simple' type='xlinkSimpleLinkFunk' info=''/>
      <field name='extended' type='xlinkExtendedLinkFunk' info=''/>
      <field name='set' type='xlinkExtendedLinkSetFunk' info=''/>
    </struct>
    <typedef name='xlinkHandlerPtr' file='xlink' type='xlinkHandler *'/>
    <typedef name='xlinkRole' file='xlink' type='xmlChar *'/>
    <typedef name='xlinkShow' file='xlink' type='enum'/>
    <typedef name='xlinkTitle' file='xlink' type='xmlChar *'/>
    <typedef name='xlinkType' file='xlink' type='enum'/>
    <struct name='xmlAttr' file='tree' type='struct _xmlAttr'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' XML_ATTRIBUTE_NODE, must be second !'/>
      <field name='name' type='const xmlChar *' info=' the name of the property'/>
      <field name='children' type='struct _xmlNode *' info=' the value of the property'/>
      <field name='last' type='struct _xmlNode *' info=' NULL'/>
      <field name='parent' type='struct _xmlNode *' info=' child-&gt;parent link'/>
      <field name='next' type='struct _xmlAttr *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlAttr *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' the containing document'/>
      <field name='ns' type='xmlNs *' info=' pointer to the associated namespace'/>
      <field name='atype' type='xmlAttributeType' info=' the attribute type if validating'/>
    </struct>
    <typedef name='xmlAttrPtr' file='tree' type='xmlAttr *'/>
    <struct name='xmlAttribute' file='tree' type='struct _xmlAttribute'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' XML_ATTRIBUTE_DECL, must be second !'/>
      <field name='name' type='const xmlChar *' info=' Attribute name'/>
      <field name='children' type='struct _xmlNode *' info=' NULL'/>
      <field name='last' type='struct _xmlNode *' info=' NULL'/>
      <field name='parent' type='struct _xmlDtd *' info=' -&gt; DTD'/>
      <field name='next' type='struct _xmlNode *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlNode *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' the containing document'/>
      <field name='nexth' type='struct _xmlAttribute *' info=' next in hash table'/>
      <field name='atype' type='xmlAttributeType' info=' The attribute type'/>
      <field name='def' type='xmlAttributeDefault' info=' the default'/>
      <field name='defaultValue' type='const xmlChar *' info=' or the default value'/>
      <field name='tree' type='xmlEnumerationPtr' info=' or the enumeration tree if any'/>
      <field name='prefix' type='const xmlChar *' info=' the namespace prefix if any'/>
      <field name='elem' type='const xmlChar *' info=' Element holding the attribute'/>
    </struct>
    <typedef name='xmlAttributeDefault' file='tree' type='enum'/>
    <typedef name='xmlAttributePtr' file='tree' type='xmlAttribute *'/>
    <struct name='xmlAttributeTable' file='valid' type='struct _xmlHashTable'/>
    <typedef name='xmlAttributeTablePtr' file='valid' type='xmlAttributeTable *'/>
    <typedef name='xmlAttributeType' file='tree' type='enum'/>
    <struct name='xmlAutomata' file='xmlautomata' type='struct _xmlAutomata'/>
    <typedef name='xmlAutomataPtr' file='xmlautomata' type='xmlAutomata *'/>
    <struct name='xmlAutomataState' file='xmlautomata' type='struct _xmlAutomataState'/>
    <typedef name='xmlAutomataStatePtr' file='xmlautomata' type='xmlAutomataState *'/>
    <struct name='xmlBuffer' file='tree' type='struct _xmlBuffer'>
      <field name='content' type='xmlChar *' info=' The buffer content UTF8'/>
      <field name='use' type='unsigned int' info=' The buffer size used'/>
      <field name='size' type='unsigned int' info=' The buffer size'/>
      <field name='alloc' type='xmlBufferAllocationScheme' info=' The realloc method'/>
    </struct>
    <typedef name='xmlBufferAllocationScheme' file='tree' type='enum'/>
    <typedef name='xmlBufferPtr' file='tree' type='xmlBuffer *'/>
    <struct name='xmlCatalog' file='catalog' type='struct _xmlCatalog'/>
    <typedef name='xmlCatalogAllow' file='catalog' type='enum'/>
    <typedef name='xmlCatalogPrefer' file='catalog' type='enum'/>
    <typedef name='xmlCatalogPtr' file='catalog' type='xmlCatalog *'/>
    <typedef name='xmlChar' file='tree' type='unsigned char'/>
    <typedef name='xmlCharEncoding' file='encoding' type='enum'/>
    <struct name='xmlCharEncodingHandler' file='encoding' type='struct _xmlCharEncodingHandler'>
      <field name='name' type='char *' info=''/>
      <field name='input' type='xmlCharEncodingInputFunc' info=''/>
      <field name='output' type='xmlCharEncodingOutputFunc' info=''/>
      <field name='iconv_in' type='iconv_t' info=''/>
      <field name='iconv_out' type='iconv_t' info=''/>
    </struct>
    <typedef name='xmlCharEncodingHandlerPtr' file='encoding' type='xmlCharEncodingHandler *'/>
    <struct name='xmlDoc' file='tree' type='struct _xmlDoc'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' XML_DOCUMENT_NODE, must be second !'/>
      <field name='name' type='char *' info=' name/filename/URI of the document'/>
      <field name='children' type='struct _xmlNode *' info=' the document tree'/>
      <field name='last' type='struct _xmlNode *' info=' last child link'/>
      <field name='parent' type='struct _xmlNode *' info=' child-&gt;parent link'/>
      <field name='next' type='struct _xmlNode *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlNode *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' autoreference to itself End of common part'/>
      <field name='compression' type='int' info=' level of zlib compression'/>
      <field name='standalone' type='int' info=' standalone document (no external refs)'/>
      <field name='intSubset' type='struct _xmlDtd *' info=' the document internal subset'/>
      <field name='extSubset' type='struct _xmlDtd *' info=' the document external subset'/>
      <field name='oldNs' type='struct _xmlNs *' info=' Global namespace, the old way'/>
      <field name='version' type='const xmlChar *' info=' the XML version string'/>
      <field name='encoding' type='const xmlChar *' info=' external initial encoding, if any'/>
      <field name='ids' type='void *' info=' Hash table for ID attributes if any'/>
      <field name='refs' type='void *' info=' Hash table for IDREFs attributes if any'/>
      <field name='URL' type='const xmlChar *' info=' The URI for that document'/>
      <field name='charset' type='int' info=' encoding of the in-memory content
actually an xmlCharEncoding'/>
    </struct>
    <typedef name='xmlDocPtr' file='tree' type='xmlDoc *'/>
    <struct name='xmlDtd' file='tree' type='struct _xmlDtd'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' XML_DTD_NODE, must be second !'/>
      <field name='name' type='const xmlChar *' info=' Name of the DTD'/>
      <field name='children' type='struct _xmlNode *' info=' the value of the property link'/>
      <field name='last' type='struct _xmlNode *' info=' last child link'/>
      <field name='parent' type='struct _xmlDoc *' info=' child-&gt;parent link'/>
      <field name='next' type='struct _xmlNode *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlNode *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' the containing document End of common part'/>
      <field name='notations' type='void *' info=' Hash table for notations if any'/>
      <field name='elements' type='void *' info=' Hash table for elements if any'/>
      <field name='attributes' type='void *' info=' Hash table for attributes if any'/>
      <field name='entities' type='void *' info=' Hash table for entities if any'/>
      <field name='ExternalID' type='const xmlChar *' info=' External identifier for PUBLIC DTD'/>
      <field name='SystemID' type='const xmlChar *' info=' URI for a SYSTEM or PUBLIC DTD'/>
      <field name='pentities' type='void *' info=' Hash table for param entities if any'/>
    </struct>
    <typedef name='xmlDtdPtr' file='tree' type='xmlDtd *'/>
    <struct name='xmlElement' file='tree' type='struct _xmlElement'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' XML_ELEMENT_DECL, must be second !'/>
      <field name='name' type='const xmlChar *' info=' Element name'/>
      <field name='children' type='struct _xmlNode *' info=' NULL'/>
      <field name='last' type='struct _xmlNode *' info=' NULL'/>
      <field name='parent' type='struct _xmlDtd *' info=' -&gt; DTD'/>
      <field name='next' type='struct _xmlNode *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlNode *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' the containing document'/>
      <field name='etype' type='xmlElementTypeVal' info=' The type'/>
      <field name='content' type='xmlElementContentPtr' info=' the allowed element content'/>
      <field name='attributes' type='xmlAttributePtr' info=' List of the declared attributes'/>
      <field name='prefix' type='const xmlChar *' info=' the namespace prefix if any'/>
      <field name='contModel' type='xmlRegexpPtr' info=' the validating regexp'/>
      <field name='contModel' type='void *' info=''/>
    </struct>
    <struct name='xmlElementContent' file='tree' type='struct _xmlElementContent'>
      <field name='type' type='xmlElementContentType' info=' PCDATA, ELEMENT, SEQ or OR'/>
      <field name='ocur' type='xmlElementContentOccur' info=' ONCE, OPT, MULT or PLUS'/>
      <field name='name' type='const xmlChar *' info=' Element name'/>
      <field name='c1' type='struct _xmlElementContent *' info=' first child'/>
      <field name='c2' type='struct _xmlElementContent *' info=' second child'/>
      <field name='parent' type='struct _xmlElementContent *' info=' parent'/>
      <field name='prefix' type='const xmlChar *' info=' Namespace prefix'/>
    </struct>
    <typedef name='xmlElementContentOccur' file='tree' type='enum'/>
    <typedef name='xmlElementContentPtr' file='tree' type='xmlElementContent *'/>
    <typedef name='xmlElementContentType' file='tree' type='enum'/>
    <typedef name='xmlElementPtr' file='tree' type='xmlElement *'/>
    <struct name='xmlElementTable' file='valid' type='struct _xmlHashTable'/>
    <typedef name='xmlElementTablePtr' file='valid' type='xmlElementTable *'/>
    <typedef name='xmlElementType' file='tree' type='enum'/>
    <typedef name='xmlElementTypeVal' file='tree' type='enum'/>
    <struct name='xmlEntitiesTable' file='entities' type='struct _xmlHashTable'/>
    <typedef name='xmlEntitiesTablePtr' file='entities' type='xmlEntitiesTable *'/>
    <struct name='xmlEntity' file='tree' type='struct _xmlEntity'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' XML_ENTITY_DECL, must be second !'/>
      <field name='name' type='const xmlChar *' info=' Entity name'/>
      <field name='children' type='struct _xmlNode *' info=' First child link'/>
      <field name='last' type='struct _xmlNode *' info=' Last child link'/>
      <field name='parent' type='struct _xmlDtd *' info=' -&gt; DTD'/>
      <field name='next' type='struct _xmlNode *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlNode *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' the containing document'/>
      <field name='orig' type='xmlChar *' info=' content without ref substitution'/>
      <field name='content' type='xmlChar *' info=' content or ndata if unparsed'/>
      <field name='length' type='int' info=' the content length'/>
      <field name='etype' type='xmlEntityType' info=' The entity type'/>
      <field name='ExternalID' type='const xmlChar *' info=' External identifier for PUBLIC'/>
      <field name='SystemID' type='const xmlChar *' info=' URI for a SYSTEM or PUBLIC Entity'/>
      <field name='nexte' type='struct _xmlEntity *' info=' unused'/>
      <field name='URI' type='const xmlChar *' info=' the full URI as computed'/>
      <field name='owner' type='int' info=' does the entity own the childrens'/>
    </struct>
    <typedef name='xmlEntityPtr' file='tree' type='xmlEntity *'/>
    <typedef name='xmlEntityType' file='entities' type='enum'/>
    <struct name='xmlEnumeration' file='tree' type='struct _xmlEnumeration'>
      <field name='next' type='struct _xmlEnumeration *' info=' next one'/>
      <field name='name' type='const xmlChar *' info=' Enumeration name'/>
    </struct>
    <typedef name='xmlEnumerationPtr' file='tree' type='xmlEnumeration *'/>
    <struct name='xmlGlobalState' file='globals' type='struct _xmlGlobalState'>
      <field name='xmlParserVersion' type='const char *' info=''/>
      <field name='xmlDefaultSAXLocator' type='xmlSAXLocator' info=''/>
      <field name='xmlDefaultSAXHandler' type='xmlSAXHandler' info=''/>
      <field name='docbDefaultSAXHandler' type='xmlSAXHandler' info=''/>
      <field name='htmlDefaultSAXHandler' type='xmlSAXHandler' info=''/>
      <field name='xmlFree' type='xmlFreeFunc' info=''/>
      <field name='xmlMalloc' type='xmlMallocFunc' info=''/>
      <field name='xmlMemStrdup' type='xmlStrdupFunc' info=''/>
      <field name='xmlRealloc' type='xmlReallocFunc' info=''/>
      <field name='xmlGenericError' type='xmlGenericErrorFunc' info=''/>
      <field name='xmlGenericErrorContext' type='void *' info=''/>
      <field name='oldXMLWDcompatibility' type='int' info=''/>
      <field name='xmlBufferAllocScheme' type='xmlBufferAllocationScheme' info=''/>
      <field name='xmlDefaultBufferSize' type='int' info=''/>
      <field name='xmlSubstituteEntitiesDefaultValue' type='int' info=''/>
      <field name='xmlDoValidityCheckingDefaultValue' type='int' info=''/>
      <field name='xmlGetWarningsDefaultValue' type='int' info=''/>
      <field name='xmlKeepBlanksDefaultValue' type='int' info=''/>
      <field name='xmlLineNumbersDefaultValue' type='int' info=''/>
      <field name='xmlLoadExtDtdDefaultValue' type='int' info=''/>
      <field name='xmlParserDebugEntities' type='int' info=''/>
      <field name='xmlPedanticParserDefaultValue' type='int' info=''/>
      <field name='xmlSaveNoEmptyTags' type='int' info=''/>
      <field name='xmlIndentTreeOutput' type='int' info=''/>
      <field name='xmlTreeIndentString' type='const char *' info=''/>
      <field name='xmlRegisterNodeDefaultValue' type='xmlRegisterNodeFunc' info=''/>
      <field name='xmlDeregisterNodeDefaultValue' type='xmlDeregisterNodeFunc' info=''/>
    </struct>
    <typedef name='xmlGlobalStatePtr' file='globals' type='xmlGlobalState *'/>
    <struct name='xmlHashTable' file='hash' type='struct _xmlHashTable'/>
    <typedef name='xmlHashTablePtr' file='hash' type='xmlHashTable *'/>
    <struct name='xmlID' file='tree' type='struct _xmlID'>
      <field name='next' type='struct _xmlID *' info=' next ID'/>
      <field name='value' type='const xmlChar *' info=' The ID name'/>
      <field name='attr' type='xmlAttrPtr' info=' The attribute holding it'/>
      <field name='name' type='const xmlChar *' info=' The attribute if attr is not available'/>
      <field name='lineno' type='int' info=' The line number if attr is not available'/>
    </struct>
    <typedef name='xmlIDPtr' file='tree' type='xmlID *'/>
    <struct name='xmlIDTable' file='valid' type='struct _xmlHashTable'/>
    <typedef name='xmlIDTablePtr' file='valid' type='xmlIDTable *'/>
    <struct name='xmlLink' file='list' type='struct _xmlLink'/>
    <typedef name='xmlLinkPtr' file='list' type='xmlLink *'/>
    <struct name='xmlList' file='list' type='struct _xmlList'/>
    <typedef name='xmlListPtr' file='list' type='xmlList *'/>
    <struct name='xmlLocationSet' file='xpointer' type='struct _xmlLocationSet'>
      <field name='locNr' type='int' info=' number of locations in the set'/>
      <field name='locMax' type='int' info=' size of the array as allocated'/>
      <field name='locTab' type='xmlXPathObjectPtr *' info=' array of locations'/>
    </struct>
    <typedef name='xmlLocationSetPtr' file='xpointer' type='xmlLocationSet *'/>
    <struct name='xmlMutex' file='threads' type='struct _xmlMutex'/>
    <typedef name='xmlMutexPtr' file='threads' type='xmlMutex *'/>
    <struct name='xmlNode' file='tree' type='struct _xmlNode'>
      <field name='_private' type='void *' info=' application data'/>
      <field name='type' type='xmlElementType' info=' type number, must be second !'/>
      <field name='name' type='const xmlChar *' info=' the name of the node, or the entity'/>
      <field name='children' type='struct _xmlNode *' info=' parent-&gt;childs link'/>
      <field name='last' type='struct _xmlNode *' info=' last child link'/>
      <field name='parent' type='struct _xmlNode *' info=' child-&gt;parent link'/>
      <field name='next' type='struct _xmlNode *' info=' next sibling link '/>
      <field name='prev' type='struct _xmlNode *' info=' previous sibling link '/>
      <field name='doc' type='struct _xmlDoc *' info=' the containing document End of common part'/>
      <field name='ns' type='xmlNs *' info=' pointer to the associated namespace'/>
      <field name='content' type='xmlChar *' info=' the content'/>
      <field name='properties' type='struct _xmlAttr *' info=' properties list'/>
      <field name='nsDef' type='xmlNs *' info=' namespace definitions on this node'/>
    </struct>
    <typedef name='xmlNodePtr' file='tree' type='xmlNode *'/>
    <struct name='xmlNodeSet' file='xpath' type='struct _xmlNodeSet'>
      <field name='nodeNr' type='int' info=' number of nodes in the set'/>
      <field name='nodeMax' type='int' info=' size of the array as allocated'/>
      <field name='nodeTab' type='xmlNodePtr *' info=' array of nodes in no particular order @@ with_ns to check wether namespace nodes should be looked at @@'/>
    </struct>
    <typedef name='xmlNodeSetPtr' file='xpath' type='xmlNodeSet *'/>
    <struct name='xmlNotation' file='tree' type='struct _xmlNotation'>
      <field name='name' type='const xmlChar *' info=' Notation name'/>
      <field name='PublicID' type='const xmlChar *' info=' Public identifier, if any'/>
      <field name='SystemID' type='const xmlChar *' info=' System identifier, if any'/>
    </struct>
    <typedef name='xmlNotationPtr' file='tree' type='xmlNotation *'/>
    <struct name='xmlNotationTable' file='valid' type='struct _xmlHashTable'/>
    <typedef name='xmlNotationTablePtr' file='valid' type='xmlNotationTable *'/>
    <struct name='xmlNs' file='tree' type='struct _xmlNs'>
      <field name='next' type='struct _xmlNs *' info=' next Ns link for this node '/>
      <field name='type' type='xmlNsType' info=' global or local'/>
      <field name='href' type='const xmlChar *' info=' URL for the namespace'/>
      <field name='prefix' type='const xmlChar *' info=' prefix for the namespace'/>
      <field name='_private' type='void *' info=' application data'/>
    </struct>
    <typedef name='xmlNsPtr' file='tree' type='xmlNs *'/>
    <typedef name='xmlNsType' file='tree' type='xmlElementType'/>
    <struct name='xmlOutputBuffer' file='tree' type='struct _xmlOutputBuffer'>
      <field name='context' type='void *' info=''/>
      <field name='writecallback' type='xmlOutputWriteCallback' info=''/>
      <field name='closecallback' type='xmlOutputCloseCallback' info=''/>
      <field name='encoder' type='xmlCharEncodingHandlerPtr' info=' I18N conversions to UTF-8'/>
      <field name='buffer' type='xmlBufferPtr' info=' Local buffer encoded in UTF-8 or ISOLatin'/>
      <field name='conv' type='xmlBufferPtr' info=' if encoder != NULL buffer for output'/>
      <field name='written' type='int' info=' total number of byte written'/>
    </struct>
    <typedef name='xmlOutputBufferPtr' file='tree' type='xmlOutputBuffer *'/>
    <struct name='xmlParserCtxt' file='tree' type='struct _xmlParserCtxt'>
      <field name='sax' type='struct _xmlSAXHandler *' info=' The SAX handler'/>
      <field name='userData' type='void *' info=' For SAX interface only, used by DOM build'/>
      <field name='myDoc' type='xmlDocPtr' info=' the document being built'/>
      <field name='wellFormed' type='int' info=' is the document well formed'/>
      <field name='replaceEntities' type='int' info=' shall we replace entities ?'/>
      <field name='version' type='const xmlChar *' info=' the XML version string'/>
      <field name='encoding' type='const xmlChar *' info=' the declared encoding, if any'/>
      <field name='standalone' type='int' info=' standalone document'/>
      <field name='html' type='int' info=' an HTML(1)/Docbook(2) document Input stream stack'/>
      <field name='input' type='xmlParserInputPtr' info=' Current input stream'/>
      <field name='inputNr' type='int' info=' Number of current input streams'/>
      <field name='inputMax' type='int' info=' Max number of input streams'/>
      <field name='inputTab' type='xmlParserInputPtr *' info=' stack of inputs Node analysis stack only used for DOM building'/>
      <field name='node' type='xmlNodePtr' info=' Current parsed Node'/>
      <field name='nodeNr' type='int' info=' Depth of the parsing stack'/>
      <field name='nodeMax' type='int' info=' Max depth of the parsing stack'/>
      <field name='nodeTab' type='xmlNodePtr *' info=' array of nodes'/>
      <field name='record_info' type='int' info=' Whether node info should be kept'/>
      <field name='node_seq' type='xmlParserNodeInfoSeq' info=' info about each node parsed'/>
      <field name='errNo' type='int' info=' error code'/>
      <field name='hasExternalSubset' type='int' info=' reference and external subset'/>
      <field name='hasPErefs' type='int' info=' the internal subset has PE refs'/>
      <field name='external' type='int' info=' are we parsing an external entity'/>
      <field name='valid' type='int' info=' is the document valid'/>
      <field name='validate' type='int' info=' shall we try to validate ?'/>
      <field name='vctxt' type='xmlValidCtxt' info=' The validity context'/>
      <field name='instate' type='xmlParserInputState' info=' current type of input'/>
      <field name='token' type='int' info=' next char look-ahead'/>
      <field name='directory' type='char *' info=' the data directory Node name stack'/>
      <field name='name' type='xmlChar *' info=' Current parsed Node'/>
      <field name='nameNr' type='int' info=' Depth of the parsing stack'/>
      <field name='nameMax' type='int' info=' Max depth of the parsing stack'/>
      <field name='nameTab' type='xmlChar * *' info=' array of nodes'/>
      <field name='nbChars' type='long' info=' number of xmlChar processed'/>
      <field name='checkIndex' type='long' info=' used by progressive parsing lookup'/>
      <field name='keepBlanks' type='int' info=' ugly but ...'/>
      <field name='disableSAX' type='int' info=' SAX callbacks are disabled'/>
      <field name='inSubset' type='int' info=' Parsing is in int 1/ext 2 subset'/>
      <field name='intSubName' type='xmlChar *' info=' name of subset'/>
      <field name='extSubURI' type='xmlChar *' info=' URI of external subset'/>
      <field name='extSubSystem' type='xmlChar *' info=' SYSTEM ID of external subset xml:space values'/>
      <field name='space' type='int *' info=' Should the parser preserve spaces'/>
      <field name='spaceNr' type='int' info=' Depth of the parsing stack'/>
      <field name='spaceMax' type='int' info=' Max depth of the parsing stack'/>
      <field name='spaceTab' type='int *' info=' array of space infos'/>
      <field name='depth' type='int' info=' to prevent entity substitution loops'/>
      <field name='entity' type='xmlParserInputPtr' info=' used to check entities boundaries'/>
      <field name='charset' type='int' info=' encoding of the in-memory content
actually an xmlCharEncoding'/>
      <field name='nodelen' type='int' info=' Those two fields are there to'/>
      <field name='nodemem' type='int' info=' Speed up large node parsing'/>
      <field name='pedantic' type='int' info=' signal pedantic warnings'/>
      <field name='_private' type='void *' info=' For user data, libxml won&apos;t touch it'/>
      <field name='loadsubset' type='int' info=' should the external subset be loaded'/>
      <field name='linenumbers' type='int' info=' set line number in element content'/>
      <field name='catalogs' type='void *' info=' document&apos;s own catalog'/>
      <field name='recovery' type='int' info=' run in recovery mode'/>
    </struct>
    <typedef name='xmlParserCtxtPtr' file='tree' type='xmlParserCtxt *'/>
    <typedef name='xmlParserErrors' file='xmlerror' type='enum'/>
    <struct name='xmlParserInput' file='tree' type='struct _xmlParserInput'>
      <field name='buf' type='xmlParserInputBufferPtr' info=' UTF-8 encoded buffer'/>
      <field name='filename' type='const char *' info=' The file analyzed, if any'/>
      <field name='directory' type='const char *' info=' the directory/base of the file'/>
      <field name='base' type='const xmlChar *' info=' Base of the array to parse'/>
      <field name='cur' type='const xmlChar *' info=' Current char being parsed'/>
      <field name='end' type='const xmlChar *' info=' end of the array to parse'/>
      <field name='length' type='int' info=' length if known'/>
      <field name='line' type='int' info=' Current line'/>
      <field name='col' type='int' info=' Current column'/>
      <field name='consumed' type='int' info=' How many xmlChars already consumed'/>
      <field name='free' type='xmlParserInputDeallocate' info=' function to deallocate the base'/>
      <field name='encoding' type='const xmlChar *' info=' the encoding string for entity'/>
      <field name='version' type='const xmlChar *' info=' the version string for entity'/>
      <field name='standalone' type='int' info=' Was that entity marked standalone'/>
    </struct>
    <struct name='xmlParserInputBuffer' file='tree' type='struct _xmlParserInputBuffer'>
      <field name='context' type='void *' info=''/>
      <field name='readcallback' type='xmlInputReadCallback' info=''/>
      <field name='closecallback' type='xmlInputCloseCallback' info=''/>
      <field name='encoder' type='xmlCharEncodingHandlerPtr' info=' I18N conversions to UTF-8'/>
      <field name='buffer' type='xmlBufferPtr' info=' Local buffer encoded in UTF-8'/>
      <field name='raw' type='xmlBufferPtr' info=' if encoder != NULL buffer for raw input'/>
    </struct>
    <typedef name='xmlParserInputBufferPtr' file='tree' type='xmlParserInputBuffer *'/>
    <typedef name='xmlParserInputPtr' file='tree' type='xmlParserInput *'/>
    <typedef name='xmlParserInputState' file='parser' type='enum'/>
    <struct name='xmlParserNodeInfo' file='parser' type='struct _xmlParserNodeInfo'>
      <field name='node' type='const struct _xmlNode *' info=' Position &amp; line # that text that created the node begins &amp; ends on'/>
      <field name='begin_pos' type='unsigned long' info=''/>
      <field name='begin_line' type='unsigned long' info=''/>
      <field name='end_pos' type='unsigned long' info=''/>
      <field name='end_line' type='unsigned long' info=''/>
    </struct>
    <typedef name='xmlParserNodeInfoPtr' file='parser' type='xmlParserNodeInfo *'/>
    <struct name='xmlParserNodeInfoSeq' file='parser' type='struct _xmlParserNodeInfoSeq'>
      <field name='maximum' type='unsigned long' info=''/>
      <field name='length' type='unsigned long' info=''/>
      <field name='buffer' type='xmlParserNodeInfo *' info=''/>
    </struct>
    <typedef name='xmlParserNodeInfoSeqPtr' file='parser' type='xmlParserNodeInfoSeq *'/>
    <typedef name='xmlParserProperties' file='xmlreader' type='enum'/>
    <struct name='xmlRMutex' file='threads' type='struct _xmlRMutex'/>
    <typedef name='xmlRMutexPtr' file='threads' type='xmlRMutex *'/>
    <struct name='xmlRef' file='tree' type='struct _xmlRef'>
      <field name='next' type='struct _xmlRef *' info=' next Ref'/>
      <field name='value' type='const xmlChar *' info=' The Ref name'/>
      <field name='attr' type='xmlAttrPtr' info=' The attribute holding it'/>
      <field name='name' type='const xmlChar *' info=' The attribute if attr is not available'/>
      <field name='lineno' type='int' info=' The line number if attr is not available'/>
    </struct>
    <typedef name='xmlRefPtr' file='tree' type='xmlRef *'/>
    <struct name='xmlRefTable' file='valid' type='struct _xmlHashTable'/>
    <typedef name='xmlRefTablePtr' file='valid' type='xmlRefTable *'/>
    <struct name='xmlRegExecCtxt' file='xmlregexp' type='struct _xmlRegExecCtxt'/>
    <typedef name='xmlRegExecCtxtPtr' file='xmlregexp' type='xmlRegExecCtxt *'/>
    <struct name='xmlRegexp' file='xmlregexp' type='struct _xmlRegexp'/>
    <typedef name='xmlRegexpPtr' file='xmlregexp' type='xmlRegexp *'/>
    <struct name='xmlSAXHandler' file='tree' type='struct _xmlSAXHandler'>
      <field name='internalSubset' type='internalSubsetSAXFunc' info=''/>
      <field name='isStandalone' type='isStandaloneSAXFunc' info=''/>
      <field name='hasInternalSubset' type='hasInternalSubsetSAXFunc' info=''/>
      <field name='hasExternalSubset' type='hasExternalSubsetSAXFunc' info=''/>
      <field name='resolveEntity' type='resolveEntitySAXFunc' info=''/>
      <field name='getEntity' type='getEntitySAXFunc' info=''/>
      <field name='entityDecl' type='entityDeclSAXFunc' info=''/>
      <field name='notationDecl' type='notationDeclSAXFunc' info=''/>
      <field name='attributeDecl' type='attributeDeclSAXFunc' info=''/>
      <field name='elementDecl' type='elementDeclSAXFunc' info=''/>
      <field name='unparsedEntityDecl' type='unparsedEntityDeclSAXFunc' info=''/>
      <field name='setDocumentLocator' type='setDocumentLocatorSAXFunc' info=''/>
      <field name='startDocument' type='startDocumentSAXFunc' info=''/>
      <field name='endDocument' type='endDocumentSAXFunc' info=''/>
      <field name='startElement' type='startElementSAXFunc' info=''/>
      <field name='endElement' type='endElementSAXFunc' info=''/>
      <field name='reference' type='referenceSAXFunc' info=''/>
      <field name='characters' type='charactersSAXFunc' info=''/>
      <field name='ignorableWhitespace' type='ignorableWhitespaceSAXFunc' info=''/>
      <field name='processingInstruction' type='processingInstructionSAXFunc' info=''/>
      <field name='comment' type='commentSAXFunc' info=''/>
      <field name='warning' type='warningSAXFunc' info=''/>
      <field name='error' type='errorSAXFunc' info=''/>
      <field name='fatalError' type='fatalErrorSAXFunc' info=' unused error() get all the errors'/>
      <field name='getParameterEntity' type='getParameterEntitySAXFunc' info=''/>
      <field name='cdataBlock' type='cdataBlockSAXFunc' info=''/>
      <field name='externalSubset' type='externalSubsetSAXFunc' info=''/>
      <field name='initialized' type='int' info=''/>
    </struct>
    <typedef name='xmlSAXHandlerPtr' file='tree' type='xmlSAXHandler *'/>
    <struct name='xmlSAXLocator' file='tree' type='struct _xmlSAXLocator'>
      <field name='getPublicId' type='const xmlChar *(*getPublicId)' info=''/>
      <field name='getSystemId' type='const xmlChar *(*getSystemId)' info=''/>
      <field name='getLineNumber' type='int(*getLineNumber)' info=''/>
      <field name='getColumnNumber' type='int(*getColumnNumber)' info=''/>
    </struct>
    <typedef name='xmlSAXLocatorPtr' file='tree' type='xmlSAXLocator *'/>
    <struct name='xmlShellCtxt' file='debugXML' type='struct _xmlShellCtxt'>
      <field name='filename' type='char *' info=''/>
      <field name='doc' type='xmlDocPtr' info=''/>
      <field name='node' type='xmlNodePtr' info=''/>
      <field name='pctxt' type='xmlXPathContextPtr' info=''/>
      <field name='loaded' type='int' info=''/>
      <field name='output' type='FILE *' info=''/>
      <field name='input' type='xmlShellReadlineFunc' info=''/>
    </struct>
    <typedef name='xmlShellCtxtPtr' file='debugXML' type='xmlShellCtxt *'/>
    <struct name='xmlTextReader' file='xmlreader' type='struct _xmlTextReader'/>
    <typedef name='xmlTextReaderPtr' file='xmlreader' type='xmlTextReader *'/>
    <struct name='xmlURI' file='uri' type='struct _xmlURI'>
      <field name='scheme' type='char *' info=' the URI scheme'/>
      <field name='opaque' type='char *' info=' opaque part'/>
      <field name='authority' type='char *' info=' the authority part'/>
      <field name='server' type='char *' info=' the server part'/>
      <field name='user' type='char *' info=' the user part'/>
      <field name='port' type='int' info=' the port number'/>
      <field name='path' type='char *' info=' the path string'/>
      <field name='query' type='char *' info=' the query string'/>
      <field name='fragment' type='char *' info=' the fragment identifier'/>
      <field name='cleanup' type='int' info=' parsing potentially unclean URI'/>
    </struct>
    <typedef name='xmlURIPtr' file='uri' type='xmlURI *'/>
    <struct name='xmlValidCtxt' file='valid' type='struct _xmlValidCtxt'>
      <field name='userData' type='void *' info=' user specific data block'/>
      <field name='error' type='xmlValidityErrorFunc' info=' the callback in case of errors'/>
      <field name='warning' type='xmlValidityWarningFunc' info=' the callback in case of warning Node analysis stack used when validating within entities'/>
      <field name='node' type='xmlNodePtr' info=' Current parsed Node'/>
      <field name='nodeNr' type='int' info=' Depth of the parsing stack'/>
      <field name='nodeMax' type='int' info=' Max depth of the parsing stack'/>
      <field name='nodeTab' type='xmlNodePtr *' info=' array of nodes'/>
      <field name='finishDtd' type='int' info=' finished validating the Dtd ?'/>
      <field name='doc' type='xmlDocPtr' info=' the document'/>
      <field name='valid' type='int' info=' temporary validity check result state state used for non-determinist content validation'/>
      <field name='vstate' type='xmlValidState *' info=' current state'/>
      <field name='vstateNr' type='int' info=' Depth of the validation stack'/>
      <field name='vstateMax' type='int' info=' Max depth of the validation stack'/>
      <field name='vstateTab' type='xmlValidState *' info=' array of validation states'/>
      <field name='am' type='xmlAutomataPtr' info=' the automata'/>
      <field name='state' type='xmlAutomataStatePtr' info=' used to build the automata'/>
      <field name='am' type='void *' info=''/>
      <field name='state' type='void *' info=''/>
    </struct>
    <typedef name='xmlValidCtxtPtr' file='valid' type='xmlValidCtxt *'/>
    <struct name='xmlValidState' file='valid' type='struct _xmlValidState'/>
    <typedef name='xmlValidStatePtr' file='valid' type='xmlValidState *'/>
    <struct name='xmlXPathAxis' file='xpath' type='struct _xmlXPathAxis'>
      <field name='name' type='const xmlChar *' info=' the axis name'/>
      <field name='func' type='xmlXPathAxisFunc' info=' the search function'/>
    </struct>
    <typedef name='xmlXPathAxisPtr' file='xpath' type='xmlXPathAxis *'/>
    <struct name='xmlXPathCompExpr' file='xpath' type='struct _xmlXPathCompExpr'/>
    <typedef name='xmlXPathCompExprPtr' file='xpath' type='xmlXPathCompExpr *'/>
    <struct name='xmlXPathContext' file='xpath' type='struct _xmlXPathContext'>
      <field name='doc' type='xmlDocPtr' info=' The current document'/>
      <field name='node' type='xmlNodePtr' info=' The current node'/>
      <field name='nb_variables_unused' type='int' info=' unused (hash table)'/>
      <field name='max_variables_unused' type='int' info=' unused (hash table)'/>
      <field name='varHash' type='xmlHashTablePtr' info=' Hash table of defined variables'/>
      <field name='nb_types' type='int' info=' number of defined types'/>
      <field name='max_types' type='int' info=' max number of types'/>
      <field name='types' type='xmlXPathTypePtr' info=' Array of defined types'/>
      <field name='nb_funcs_unused' type='int' info=' unused (hash table)'/>
      <field name='max_funcs_unused' type='int' info=' unused (hash table)'/>
      <field name='funcHash' type='xmlHashTablePtr' info=' Hash table of defined funcs'/>
      <field name='nb_axis' type='int' info=' number of defined axis'/>
      <field name='max_axis' type='int' info=' max number of axis'/>
      <field name='axis' type='xmlXPathAxisPtr' info=' Array of defined axis the namespace nodes of the context node'/>
      <field name='namespaces' type='xmlNsPtr *' info=' Array of namespaces'/>
      <field name='nsNr' type='int' info=' number of namespace in scope'/>
      <field name='user' type='void *' info=' function to free extra variables'/>
      <field name='contextSize' type='int' info=' the context size'/>
      <field name='proximityPosition' type='int' info=' the proximity position extra stuff for XPointer'/>
      <field name='xptr' type='int' info=' it this an XPointer context'/>
      <field name='here' type='xmlNodePtr' info=' for here()'/>
      <field name='origin' type='xmlNodePtr' info=' for origin() the set of namespace declarations in scope for the expression'/>
      <field name='nsHash' type='xmlHashTablePtr' info=' The namespaces hash table'/>
      <field name='varLookupFunc' type='void *' info=' variable lookup func'/>
      <field name='varLookupData' type='void *' info=' variable lookup data Possibility to link in an extra item'/>
      <field name='extra' type='void *' info=' needed for XSLT The function name and URI when calling a function'/>
      <field name='function' type='const xmlChar *' info=''/>
      <field name='functionURI' type='const xmlChar *' info=' function lookup function and data'/>
      <field name='funcLookupFunc' type='void *' info=' function lookup func'/>
      <field name='funcLookupData' type='void *' info=' function lookup data temporary namespace lists kept for walking the namespace axis'/>
      <field name='tmpNsList' type='xmlNsPtr *' info=' Array of namespaces'/>
      <field name='tmpNsNr' type='int' info=' number of namespace in scope'/>
    </struct>
    <typedef name='xmlXPathContextPtr' file='xpath' type='xmlXPathContext *'/>
    <typedef name='xmlXPathError' file='xpath' type='enum'/>
    <typedef name='xmlXPathFuncPtr' file='xpath' type='xmlXPathFunct *'/>
    <struct name='xmlXPathFunct' file='xpath' type='struct _xmlXPathFunct'>
      <field name='name' type='const xmlChar *' info=' the function name'/>
      <field name='func' type='xmlXPathEvalFunc' info=' the evaluation function'/>
    </struct>
    <struct name='xmlXPathObject' file='xpath' type='struct _xmlXPathObject'>
      <field name='type' type='xmlXPathObjectType' info=''/>
      <field name='nodesetval' type='xmlNodeSetPtr' info=''/>
      <field name='boolval' type='int' info=''/>
      <field name='floatval' type='double' info=''/>
      <field name='stringval' type='xmlChar *' info=''/>
      <field name='user' type='void *' info=''/>
      <field name='index' type='int' info=''/>
      <field name='user2' type='void *' info=''/>
      <field name='index2' type='int' info=''/>
    </struct>
    <typedef name='xmlXPathObjectPtr' file='xpath' type='xmlXPathObject *'/>
    <typedef name='xmlXPathObjectType' file='xpath' type='enum'/>
    <struct name='xmlXPathParserContext' file='xpath' type='struct _xmlXPathParserContext'>
      <field name='cur' type='const xmlChar *' info=' the current char being parsed'/>
      <field name='base' type='const xmlChar *' info=' the full expression'/>
      <field name='error' type='int' info=' error code'/>
      <field name='context' type='xmlXPathContextPtr' info=' the evaluation context'/>
      <field name='value' type='xmlXPathObjectPtr' info=' the current value'/>
      <field name='valueNr' type='int' info=' number of values stacked'/>
      <field name='valueMax' type='int' info=' max number of values stacked'/>
      <field name='valueTab' type='xmlXPathObjectPtr *' info=' stack of values'/>
      <field name='comp' type='xmlXPathCompExprPtr' info=' the precompiled expression'/>
      <field name='xptr' type='int' info=' it this an XPointer expression'/>
      <field name='ancestor' type='xmlNodePtr' info=' used for walking preceding axis'/>
    </struct>
    <typedef name='xmlXPathParserContextPtr' file='xpath' type='xmlXPathParserContext *'/>
    <struct name='xmlXPathType' file='xpath' type='struct _xmlXPathType'>
      <field name='name' type='const xmlChar *' info=' the type name'/>
      <field name='func' type='xmlXPathConvertFunc' info=' the conversion function'/>
    </struct>
    <typedef name='xmlXPathTypePtr' file='xpath' type='xmlXPathType *'/>
    <struct name='xmlXPathVariable' file='xpath' type='struct _xmlXPathVariable'>
      <field name='name' type='const xmlChar *' info=' the variable name'/>
      <field name='value' type='xmlXPathObjectPtr' info=' the value'/>
    </struct>
    <typedef name='xmlXPathVariablePtr' file='xpath' type='xmlXPathVariable *'/>
    <variable name='docbDefaultSAXHandler' file='globals' type='xmlSAXHandler'/>
    <variable name='htmlDefaultSAXHandler' file='globals' type='xmlSAXHandler'/>
    <variable name='oldXMLWDcompatibility' file='globals' type='int'/>
    <variable name='xmlBufferAllocScheme' file='globals' type='xmlBufferAllocationScheme'/>
    <variable name='xmlDefaultBufferSize' file='globals' type='int'/>
    <variable name='xmlDefaultSAXHandler' file='globals' type='xmlSAXHandler'/>
    <variable name='xmlDefaultSAXLocator' file='globals' type='xmlSAXLocator'/>
    <variable name='xmlDeregisterNodeDefaultValue' file='globals' type='xmlDeregisterNodeFunc'/>
    <variable name='xmlDoValidityCheckingDefaultValue' file='globals' type='int'/>
    <variable name='xmlFree' file='globals' type='xmlFreeFunc'/>
    <variable name='xmlGenericError' file='globals' type='xmlGenericErrorFunc'/>
    <variable name='xmlGenericErrorContext' file='globals' type='void *'/>
    <variable name='xmlGetWarningsDefaultValue' file='parser' type='int'/>
    <variable name='xmlIndentTreeOutput' file='globals' type='int'/>
    <variable name='xmlKeepBlanksDefaultValue' file='globals' type='int'/>
    <variable name='xmlLineNumbersDefaultValue' file='globals' type='int'/>
    <variable name='xmlLoadExtDtdDefaultValue' file='globals' type='int'/>
    <variable name='xmlMalloc' file='globals' type='xmlMallocFunc'/>
    <variable name='xmlMemStrdup' file='globals' type='xmlStrdupFunc'/>
    <variable name='xmlParserDebugEntities' file='globals' type='int'/>
    <variable name='xmlParserVersion' file='parser' type='const char *'/>
    <variable name='xmlPedanticParserDefaultValue' file='globals' type='int'/>
    <variable name='xmlRealloc' file='globals' type='xmlReallocFunc'/>
    <variable name='xmlRegisterNodeDefaultValue' file='globals' type='xmlRegisterNodeFunc'/>
    <variable name='xmlSaveNoEmptyTags' file='globals' type='int'/>
    <variable name='xmlStringComment' file='parserInternals' type='const xmlCharxmlStringComment[]'/>
    <variable name='xmlStringText' file='parserInternals' type='const xmlCharxmlStringText[]'/>
    <variable name='xmlStringTextNoenc' file='parserInternals' type='const xmlCharxmlStringTextNoenc[]'/>
    <variable name='xmlSubstituteEntitiesDefaultValue' file='parser' type='int'/>
    <variable name='xmlTreeIndentString' file='globals' type='const char *'/>
    <variable name='xmlXPathNAN' file='xpath' type='double'/>
    <variable name='xmlXPathNINF' file='xpath' type='double'/>
    <variable name='xmlXPathPINF' file='xpath' type='double'/>
    <function name='UTF8ToHtml' file='HTMLparser'>
      <info>Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out.</info>
      <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </function>
    <function name='UTF8Toisolat1' file='encoding'>
      <info>Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1 block of chars out.</info>
      <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of ocetes consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </function>
    <function name='attribute' file='SAX'>
      <info>Handle an attribute that has been read by the parser. The default handling is to convert the attribute into an DOM subtree and past it in a new xmlAttr element added to the element.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='fullname' type='const xmlChar *' info='The attribute name, including namespace prefix'/>
      <arg name='value' type='const xmlChar *' info='The attribute value'/>
    </function>
    <function name='attributeDecl' file='SAX'>
      <info>An attribute definition has been parsed</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='elem' type='const xmlChar *' info='the name of the element'/>
      <arg name='fullname' type='const xmlChar *' info='the attribute name'/>
      <arg name='type' type='int' info='the attribute type'/>
      <arg name='def' type='int' info='the type of default value'/>
      <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
      <arg name='tree' type='xmlEnumerationPtr' info='the tree of enumerated value set'/>
    </function>
    <functype name='attributeDeclSAXFunc' file='parser'>
      <info>An attribute definition has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='elem' type='const xmlChar *' info='the name of the element'/>
      <arg name='fullname' type='const xmlChar *' info='the attribute name'/>
      <arg name='type' type='int' info='the attribute type'/>
      <arg name='def' type='int' info='the type of default value'/>
      <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
      <arg name='tree' type='xmlEnumerationPtr' info='the tree of enumerated value set'/>
    </functype>
    <functype name='attributeSAXFunc' file='parser'>
      <info>Handle an attribute that has been read by the parser. The default handling is to convert the attribute into an DOM subtree and past it in a new xmlAttr element added to the element.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The attribute name, including namespace prefix'/>
      <arg name='value' type='const xmlChar *' info='The attribute value'/>
    </functype>
    <function name='cdataBlock' file='SAX'>
      <info>called when a pcdata block has been parsed</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='value' type='const xmlChar *' info='The pcdata content'/>
      <arg name='len' type='int' info='the block length'/>
    </function>
    <functype name='cdataBlockSAXFunc' file='parser'>
      <info>Called when a pcdata block has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='value' type='const xmlChar *' info='The pcdata content'/>
      <arg name='len' type='int' info='the block length'/>
    </functype>
    <function name='characters' file='SAX'>
      <info>receiving some chars from the parser.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
      <arg name='len' type='int' info='the number of xmlChar'/>
    </function>
    <functype name='charactersSAXFunc' file='parser'>
      <info>Receiving some chars from the parser.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
      <arg name='len' type='int' info='the number of xmlChar'/>
    </functype>
    <function name='checkNamespace' file='SAX'>
      <info>Check that the current element namespace is the same as the one read upon parsing.</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='namespace' type='xmlChar *' info='the namespace to check against'/>
    </function>
    <function name='comment' file='SAX'>
      <info>A comment has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='value' type='const xmlChar *' info='the comment content'/>
    </function>
    <functype name='commentSAXFunc' file='parser'>
      <info>A comment has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='value' type='const xmlChar *' info='the comment content'/>
    </functype>
    <function name='docbCreateFileParserCtxt' file='DOCBparser'>
      <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='docbParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='encoding' type='const char *' info='the SGML document encoding, or NULL'/>
    </function>
    <function name='docbCreatePushParserCtxt' file='DOCBparser'>
      <info>Create a parser context for using the DocBook SGML parser in push mode To allow content encoding detection, @size should be &gt;= 4 The value of @filename is used for fetching external entities and error/warning reports.</info>
      <return type='docbParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='sax' type='docbSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='chunk' type='const char *' info='a pointer to an array of chars'/>
      <arg name='size' type='int' info='number of chars in the array'/>
      <arg name='filename' type='const char *' info='an optional file name or URI'/>
      <arg name='enc' type='xmlCharEncoding' info='an optional encoding'/>
    </function>
    <function name='docbDefaultSAXHandlerInit' file='SAX'>
      <info>Initialize the default SAX handler</info>
      <return type='void'/>
    </function>
    <function name='docbEncodeEntities' file='DOCBparser'>
      <info>Take a block of UTF-8 chars in and try to convert it to an ASCII plus SGML entities block of chars out.</info>
      <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
      <arg name='quoteChar' type='int' info='the quote character to escape (&apos; or &quot;) or zero.'/>
    </function>
    <function name='docbFreeParserCtxt' file='DOCBparser'>
      <info>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</info>
      <return type='void'/>
      <arg name='ctxt' type='docbParserCtxtPtr' info='an SGML parser context'/>
    </function>
    <function name='docbParseChunk' file='DOCBparser'>
      <info>Parse a Chunk of memory</info>
      <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
      <arg name='ctxt' type='docbParserCtxtPtr' info='an XML parser context'/>
      <arg name='chunk' type='const char *' info='an char array'/>
      <arg name='size' type='int' info='the size in byte of the chunk'/>
      <arg name='terminate' type='int' info='last chunk indicator'/>
    </function>
    <function name='docbParseDoc' file='DOCBparser'>
      <info>parse an SGML in-memory document and build a tree.</info>
      <return type='docbDocPtr' info='the resulting document tree'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the SGML document encoding, or NULL'/>
    </function>
    <function name='docbParseDocument' file='DOCBparser'>
      <info>parse an SGML document (and build a tree if using the standard SAX interface).</info>
      <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
      <arg name='ctxt' type='docbParserCtxtPtr' info='an SGML parser context'/>
    </function>
    <function name='docbParseFile' file='DOCBparser'>
      <info>parse a Docbook SGML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='docbDocPtr' info='the resulting document tree'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='encoding' type='const char *' info='a free form C string describing document encoding, or NULL'/>
    </function>
    <function name='docbSAXParseDoc' file='DOCBparser'>
      <info>parse an SGML in-memory document and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
      <return type='docbDocPtr' info='the resulting document tree'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the SGML document encoding, or NULL'/>
      <arg name='sax' type='docbSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
    </function>
    <function name='docbSAXParseFile' file='DOCBparser'>
      <info>parse an SGML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
      <return type='docbDocPtr' info='the resulting document tree'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the SGML document encoding, or NULL'/>
      <arg name='sax' type='docbSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
    </function>
    <function name='elementDecl' file='SAX'>
      <info>An element definition has been parsed</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the element name'/>
      <arg name='type' type='int' info='the element type'/>
      <arg name='content' type='xmlElementContentPtr' info='the element value tree'/>
    </function>
    <functype name='elementDeclSAXFunc' file='parser'>
      <info>An element definition has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the element name'/>
      <arg name='type' type='int' info='the element type'/>
      <arg name='content' type='xmlElementContentPtr' info='the element value tree'/>
    </functype>
    <function name='endDocument' file='SAX'>
      <info>called when the document end has been detected.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <functype name='endDocumentSAXFunc' file='parser'>
      <info>Called when the document end has been detected.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </functype>
    <function name='endElement' file='SAX'>
      <info>called when the end of an element has been detected.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The element name'/>
    </function>
    <functype name='endElementSAXFunc' file='parser'>
      <info>Called when the end of an element has been detected.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The element name'/>
    </functype>
    <function name='entityDecl' file='SAX'>
      <info>An entity definition has been parsed</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='type' type='int' info='the entity type'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
      <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
    </function>
    <functype name='entityDeclSAXFunc' file='parser'>
      <info>An entity definition has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='type' type='int' info='the entity type'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
      <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
    </functype>
    <functype name='errorSAXFunc' file='parser'>
      <info>Display and format an error messages, callback.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </functype>
    <function name='externalSubset' file='SAX'>
      <info>Callback on external subset declaration.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the root element name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
    </function>
    <functype name='externalSubsetSAXFunc' file='parser'>
      <info>Callback on external subset declaration.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the root element name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
    </functype>
    <functype name='fatalErrorSAXFunc' file='parser'>
      <info>Display and format fatal error messages, callback. Note: so far fatalError() SAX callbacks are not used, error() get all the callbacks for errors.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </functype>
    <functype name='ftpDataCallback' file='nanoftp'>
      <info>A callback for the xmlNanoFTPGet command.</info>
      <return type='void'/>
      <arg name='userData' type='void *' info='the user provided context'/>
      <arg name='data' type='const char *' info='the data received'/>
      <arg name='len' type='int' info='its size in bytes'/>
    </functype>
    <functype name='ftpListCallback' file='nanoftp'>
      <info>A callback for the xmlNanoFTPList command. Note that only one of year and day:minute are specified.</info>
      <return type='void'/>
      <arg name='userData' type='void *' info='user provided data for the callback'/>
      <arg name='filename' type='const char *' info='the file name (including &quot;-&gt;&quot; when links are shown)'/>
      <arg name='attrib' type='const char *' info='the attribute string'/>
      <arg name='owner' type='const char *' info='the owner string'/>
      <arg name='group' type='const char *' info='the group string'/>
      <arg name='size' type='unsigned long' info='the file size'/>
      <arg name='links' type='int' info='the link count'/>
      <arg name='year' type='int' info='the year'/>
      <arg name='month' type='const char *' info='the month'/>
      <arg name='day' type='int' info='the day'/>
      <arg name='hour' type='int' info='the hour'/>
      <arg name='minute' type='int' info='the minute'/>
    </functype>
    <function name='getColumnNumber' file='SAX'>
      <info>Provide the column number of the current parsing point.</info>
      <return type='int' info='an int'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <function name='getEntity' file='SAX'>
      <info>Get an entity by name</info>
      <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The entity name'/>
    </function>
    <functype name='getEntitySAXFunc' file='parser'>
      <info>Get an entity by name.</info>
      <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The entity name'/>
    </functype>
    <function name='getLineNumber' file='SAX'>
      <info>Provide the line number of the current parsing point.</info>
      <return type='int' info='an int'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <function name='getNamespace' file='SAX'>
      <info>Get the current element namespace.</info>
      <return type='xmlNsPtr' info='the xmlNsPtr or NULL if none'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <function name='getParameterEntity' file='SAX'>
      <info>Get a parameter entity by name</info>
      <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The entity name'/>
    </function>
    <functype name='getParameterEntitySAXFunc' file='parser'>
      <info>Get a parameter entity by name.</info>
      <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The entity name'/>
    </functype>
    <function name='getPublicId' file='SAX'>
      <info>Provides the public ID e.g. &quot;-//SGMLSOURCE//DTD DEMO//EN&quot;</info>
      <return type='const xmlChar *' info='a xmlChar *'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <function name='getSystemId' file='SAX'>
      <info>Provides the system ID, basically URL or filename e.g. http://www.sgmlsource.com/dtds/memo.dtd</info>
      <return type='const xmlChar *' info='a xmlChar *'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <function name='globalNamespace' file='SAX'>
      <info>An old global namespace has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='href' type='const xmlChar *' info='the namespace associated URN'/>
      <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
    </function>
    <function name='hasExternalSubset' file='SAX'>
      <info>Does this document has an external subset</info>
      <return type='int' info='1 if true'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <functype name='hasExternalSubsetSAXFunc' file='parser'>
      <info>Does this document has an external subset?</info>
      <return type='int' info='1 if true'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </functype>
    <function name='hasInternalSubset' file='SAX'>
      <info>Does this document has an internal subset</info>
      <return type='int' info='1 if true'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <functype name='hasInternalSubsetSAXFunc' file='parser'>
      <info>Does this document has an internal subset.</info>
      <return type='int' info='1 if true'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </functype>
    <function name='htmlAutoCloseTag' file='HTMLparser'>
      <info>The HTML DTD allows a tag to implicitly close other tags. The list is kept in htmlStartClose array. This function checks if the element or one of it&apos;s children would autoclose the given tag.</info>
      <return type='int' info='1 if autoclose, 0 otherwise'/>
      <arg name='doc' type='htmlDocPtr' info='the HTML document'/>
      <arg name='name' type='const xmlChar *' info='The tag name'/>
      <arg name='elem' type='htmlNodePtr' info='the HTML element'/>
    </function>
    <function name='htmlCreateFileParserCtxt' file='parserInternals'>
      <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='htmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
    </function>
    <function name='htmlCreatePushParserCtxt' file='HTMLparser'>
      <info>Create a parser context for using the HTML parser in push mode To allow content encoding detection, @size should be &gt;= 4 The value of @filename is used for fetching external entities and error/warning reports.</info>
      <return type='htmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='sax' type='htmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='chunk' type='const char *' info='a pointer to an array of chars'/>
      <arg name='size' type='int' info='number of chars in the array'/>
      <arg name='filename' type='const char *' info='an optional file name or URI'/>
      <arg name='enc' type='xmlCharEncoding' info='an optional encoding'/>
    </function>
    <function name='htmlDefaultSAXHandlerInit' file='SAX'>
      <info>Initialize the default SAX handler</info>
      <return type='void'/>
    </function>
    <function name='htmlDocContentDumpFormatOutput' file='HTMLtree'>
      <info>Dump an HTML document.</info>
      <return type='void'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the encoding string'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='htmlDocContentDumpOutput' file='HTMLtree'>
      <info>Dump an HTML document. Formating return/spaces are added.</info>
      <return type='void'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the encoding string'/>
    </function>
    <function name='htmlDocDump' file='HTMLtree'>
      <info>Dump an HTML document to an open FILE.</info>
      <return type='int' info='the number of byte written or -1 in case of failure.'/>
      <arg name='f' type='FILE *' info='the FILE*'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='htmlDocDumpMemory' file='HTMLtree'>
      <info>Dump an HTML document in memory and return the xmlChar * and it&apos;s size. It&apos;s up to the caller to free the memory.</info>
      <return type='void'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
      <arg name='size' type='int *' info='OUT: the memory length'/>
    </function>
    <function name='htmlEncodeEntities' file='HTMLparser'>
      <info>Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out.</info>
      <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
      <arg name='quoteChar' type='int' info='the quote character to escape (&apos; or &quot;) or zero.'/>
    </function>
    <function name='htmlEntityLookup' file='HTMLparser'>
      <info>Lookup the given entity in EntitiesTable  TODO: the linear scan is really ugly, an hash table is really needed.</info>
      <return type='const htmlEntityDesc *' info='the associated htmlEntityDescPtr if found, NULL otherwise.'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
    </function>
    <function name='htmlEntityValueLookup' file='HTMLparser'>
      <info>Lookup the given entity in EntitiesTable  TODO: the linear scan is really ugly, an hash table is really needed.</info>
      <return type='const htmlEntityDesc *' info='the associated htmlEntityDescPtr if found, NULL otherwise.'/>
      <arg name='value' type='unsigned int' info='the entity&apos;s unicode value'/>
    </function>
    <function name='htmlFreeParserCtxt' file='HTMLparser'>
      <info>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</info>
      <return type='void'/>
      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
    </function>
    <function name='htmlGetMetaEncoding' file='HTMLtree'>
      <info>Encoding definition lookup in the Meta tags</info>
      <return type='const xmlChar *' info='the current encoding as flagged in the HTML source'/>
      <arg name='doc' type='htmlDocPtr' info='the document'/>
    </function>
    <function name='htmlHandleOmittedElem' file='HTMLparser'>
      <info>Set and return the previous value for handling HTML omitted tags.</info>
      <return type='int' info='the last value for 0 for no handling, 1 for auto insertion.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='htmlInitAutoClose' file='parserInternals'>
      <info>Initialize the htmlStartCloseIndex for fast lookup of closing tags names. This is not reentrant. Call xmlInitParser() once before processing in case of use in multithreaded programs.</info>
      <return type='void'/>
    </function>
    <function name='htmlIsAutoClosed' file='HTMLparser'>
      <info>The HTML DTD allows a tag to implicitly close other tags. The list is kept in htmlStartClose array. This function checks if a tag is autoclosed by one of it&apos;s child</info>
      <return type='int' info='1 if autoclosed, 0 otherwise'/>
      <arg name='doc' type='htmlDocPtr' info='the HTML document'/>
      <arg name='elem' type='htmlNodePtr' info='the HTML element'/>
    </function>
    <function name='htmlIsBooleanAttr' file='HTMLtree'>
      <info>Determine if a given attribute is a boolean attribute.</info>
      <return type='int' info='false if the attribute is not boolean, true otherwise.'/>
      <arg name='name' type='const xmlChar *' info='the name of the attribute to check'/>
    </function>
    <function name='htmlIsScriptAttribute' file='HTMLparser'>
      <info>Check if an attribute is of content type Script</info>
      <return type='int' info='1 is the attribute is a script 0 otherwise'/>
      <arg name='name' type='const xmlChar *' info='an attribute name'/>
    </function>
    <function name='htmlNewDoc' file='HTMLtree'>
      <info>Creates a new HTML document</info>
      <return type='htmlDocPtr' info='a new document'/>
      <arg name='URI' type='const xmlChar *' info='URI for the dtd, or NULL'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID of the DTD, or NULL'/>
    </function>
    <function name='htmlNewDocNoDtD' file='HTMLtree'>
      <info>Creates a new HTML document without a DTD node if @URI and @ExternalID are NULL</info>
      <return type='htmlDocPtr' info='a new document, do not initialize the DTD if not provided'/>
      <arg name='URI' type='const xmlChar *' info='URI for the dtd, or NULL'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID of the DTD, or NULL'/>
    </function>
    <function name='htmlNodeDump' file='HTMLtree'>
      <info>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.</info>
      <return type='int' info='the number of byte written or -1 in case of error'/>
      <arg name='buf' type='xmlBufferPtr' info='the HTML buffer output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
    </function>
    <function name='htmlNodeDumpFile' file='HTMLtree'>
      <info>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.</info>
      <return type='void'/>
      <arg name='out' type='FILE *' info='the FILE pointer'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
    </function>
    <function name='htmlNodeDumpFileFormat' file='HTMLtree'>
      <info>Dump an HTML node, recursive behaviour,children are printed too.  TODO: if encoding == NULL try to save in the doc encoding</info>
      <return type='int' info='the number of byte written or -1 in case of failure.'/>
      <arg name='out' type='FILE *' info='the FILE pointer'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
      <arg name='encoding' type='const char *' info='the document encoding'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='htmlNodeDumpFormatOutput' file='HTMLtree'>
      <info>Dump an HTML node, recursive behaviour,children are printed too.</info>
      <return type='void'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
      <arg name='encoding' type='const char *' info='the encoding string'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='htmlNodeDumpOutput' file='HTMLtree'>
      <info>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns/spaces are added.</info>
      <return type='void'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
      <arg name='encoding' type='const char *' info='the encoding string'/>
    </function>
    <function name='htmlParseCharRef' file='HTMLparser'>
      <info>parse Reference declarations  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;</info>
      <return type='int' info='the value parsed (as an int)'/>
      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
    </function>
    <function name='htmlParseChunk' file='HTMLparser'>
      <info>Parse a Chunk of memory</info>
      <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
      <arg name='ctxt' type='htmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='chunk' type='const char *' info='an char array'/>
      <arg name='size' type='int' info='the size in byte of the chunk'/>
      <arg name='terminate' type='int' info='last chunk indicator'/>
    </function>
    <function name='htmlParseDoc' file='HTMLparser'>
      <info>parse an HTML in-memory document and build a tree.</info>
      <return type='htmlDocPtr' info='the resulting document tree'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
    </function>
    <function name='htmlParseDocument' file='HTMLparser'>
      <info>parse an HTML document (and build a tree if using the standard SAX interface).</info>
      <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
    </function>
    <function name='htmlParseElement' file='HTMLparser'>
      <info>parse an HTML element, this is highly recursive  [39] element ::= EmptyElemTag | STag content ETag  [41] Attribute ::= Name Eq AttValue</info>
      <return type='void'/>
      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
    </function>
    <function name='htmlParseEntityRef' file='HTMLparser'>
      <info>parse an HTML ENTITY references  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;</info>
      <return type='const htmlEntityDesc *' info='the associated htmlEntityDescPtr if found, or NULL otherwise, if non-NULL *str will have to be freed by the caller.'/>
      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
      <arg name='str' type='xmlChar **' info='location to store the entity name'/>
    </function>
    <function name='htmlParseFile' file='HTMLparser'>
      <info>parse an HTML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='htmlDocPtr' info='the resulting document tree'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
    </function>
    <function name='htmlSAXParseDoc' file='HTMLparser'>
      <info>Parse an HTML in-memory document. If sax is not NULL, use the SAX callbacks to handle parse events. If sax is NULL, fallback to the default DOM behavior and return a tree.</info>
      <return type='htmlDocPtr' info='the resulting document tree unless SAX is NULL or the document is not well formed.'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
      <arg name='sax' type='htmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
    </function>
    <function name='htmlSAXParseFile' file='HTMLparser'>
      <info>parse an HTML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
      <return type='htmlDocPtr' info='the resulting document tree unless SAX is NULL or the document is not well formed.'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
      <arg name='sax' type='htmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
    </function>
    <function name='htmlSaveFile' file='HTMLtree'>
      <info>Dump an HTML document to a file. If @filename is &quot;-&quot; the stdout file is used.</info>
      <return type='int' info='the number of byte written or -1 in case of failure.'/>
      <arg name='filename' type='const char *' info='the filename (or URL)'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='htmlSaveFileEnc' file='HTMLtree'>
      <info>Dump an HTML document to a file using a given encoding and formatting returns/spaces are added.</info>
      <return type='int' info='the number of byte written or -1 in case of failure.'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the document encoding'/>
    </function>
    <function name='htmlSaveFileFormat' file='HTMLtree'>
      <info>Dump an HTML document to a file using a given encoding.</info>
      <return type='int' info='the number of byte written or -1 in case of failure.'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the document encoding'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='htmlSetMetaEncoding' file='HTMLtree'>
      <info>Sets the current encoding in the Meta tags NOTE: this will not change the document content encoding, just the META flag associated.</info>
      <return type='int' info='0 in case of success and -1 in case of error'/>
      <arg name='doc' type='htmlDocPtr' info='the document'/>
      <arg name='encoding' type='const xmlChar *' info='the encoding string'/>
    </function>
    <function name='htmlTagLookup' file='HTMLparser'>
      <info>Lookup the HTML tag in the ElementTable</info>
      <return type='const htmlElemDesc *' info='the related htmlElemDescPtr or NULL if not found.'/>
      <arg name='tag' type='const xmlChar *' info='The tag name in lowercase'/>
    </function>
    <function name='ignorableWhitespace' file='SAX'>
      <info>receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use characters</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
      <arg name='len' type='int' info='the number of xmlChar'/>
    </function>
    <functype name='ignorableWhitespaceSAXFunc' file='parser'>
      <info>Receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use characters.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
      <arg name='len' type='int' info='the number of xmlChar'/>
    </functype>
    <function name='initGenericErrorDefaultFunc' file='xmlerror'>
      <info>Set or reset (if NULL) the default handler for generic errors</info>
      <return type='void'/>
      <arg name='handler' type='xmlGenericErrorFunc *' info='the handler'/>
    </function>
    <function name='initdocbDefaultSAXHandler' file='SAX'>
      <info>Initialize the default DocBook SAX handler</info>
      <return type='void'/>
      <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
    </function>
    <function name='inithtmlDefaultSAXHandler' file='SAX'>
      <info>Initialize the default HTML SAX handler</info>
      <return type='void'/>
      <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
    </function>
    <function name='initxmlDefaultSAXHandler' file='SAX'>
      <info>Initialize the default XML SAX handler</info>
      <return type='void'/>
      <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
      <arg name='warning' type='int' info='flag if non-zero sets the handler warning procedure'/>
    </function>
    <function name='inputPop' file='parserInternals'>
      <info>Pops the top parser input from the input stack</info>
      <return type='xmlParserInputPtr' info='the input just removed'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='inputPush' file='parserInternals'>
      <info>Pushes a new parser input on top of the input stack</info>
      <return type='int' info='0 in case of error, the index in the stack otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlParserInputPtr' info='the parser input'/>
    </function>
    <function name='internalSubset' file='SAX'>
      <info>Callback on internal subset declaration.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the root element name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
    </function>
    <functype name='internalSubsetSAXFunc' file='parser'>
      <info>Callback on internal subset declaration.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the root element name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
    </functype>
    <function name='isStandalone' file='SAX'>
      <info>Is this document tagged standalone ?</info>
      <return type='int' info='1 if true'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <functype name='isStandaloneSAXFunc' file='parser'>
      <info>Is this document tagged standalone?</info>
      <return type='int' info='1 if true'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </functype>
    <function name='isolat1ToUTF8' file='encoding'>
      <info>Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8 block of chars out.</info>
      <return type='int' info='0 if success, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of ocetes consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of ISO Latin 1 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </function>
    <function name='namePop' file='parserInternals'>
      <info>Pops the top element name from the name stack</info>
      <return type='xmlChar *' info='the name just removed'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='namePush' file='parserInternals'>
      <info>Pushes a new element name on top of the name stack</info>
      <return type='int' info='0 in case of error, the index in the stack otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlChar *' info='the element name'/>
    </function>
    <function name='namespaceDecl' file='SAX'>
      <info>A namespace has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='href' type='const xmlChar *' info='the namespace associated URN'/>
      <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
    </function>
    <function name='nodePop' file='parserInternals'>
      <info>Pops the top element node from the node stack</info>
      <return type='xmlNodePtr' info='the node just removed'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='nodePush' file='parserInternals'>
      <info>Pushes a new element node on top of the node stack</info>
      <return type='int' info='0 in case of error, the index in the stack otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlNodePtr' info='the element node'/>
    </function>
    <function name='notationDecl' file='SAX'>
      <info>What to do when a notation declaration has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The name of the notation'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
    </function>
    <functype name='notationDeclSAXFunc' file='parser'>
      <info>What to do when a notation declaration has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The name of the notation'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
    </functype>
    <function name='processingInstruction' file='SAX'>
      <info>A processing instruction has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='target' type='const xmlChar *' info='the target name'/>
      <arg name='data' type='const xmlChar *' info='the PI data&apos;s'/>
    </function>
    <functype name='processingInstructionSAXFunc' file='parser'>
      <info>A processing instruction has been parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='target' type='const xmlChar *' info='the target name'/>
      <arg name='data' type='const xmlChar *' info='the PI data&apos;s'/>
    </functype>
    <function name='reference' file='SAX'>
      <info>called when an entity reference is detected.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The entity name'/>
    </function>
    <functype name='referenceSAXFunc' file='parser'>
      <info>Called when an entity reference is detected.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The entity name'/>
    </functype>
    <function name='resolveEntity' file='SAX'>
      <info>The entity loader, to control the loading of external entities, the application can either: - override this resolveEntity() callback in the SAX block - or better use the xmlSetExternalEntityLoader() function to set up it&apos;s own entity resolution routine</info>
      <return type='xmlParserInputPtr' info='the xmlParserInputPtr if inlined or NULL for DOM behaviour.'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
    </function>
    <functype name='resolveEntitySAXFunc' file='parser'>
      <info>Callback: The entity loader, to control the loading of external entities, the application can either: - override this resolveEntity() callback in the SAX block - or better use the xmlSetExternalEntityLoader() function to set up it&apos;s own entity resolution routine</info>
      <return type='xmlParserInputPtr' info='the xmlParserInputPtr if inlined or NULL for DOM behaviour.'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
    </functype>
    <function name='setDocumentLocator' file='SAX'>
      <info>Receive the document locator at startup, actually xmlDefaultSAXLocator Everything is available on the context, so this is useless in our case.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='loc' type='xmlSAXLocatorPtr' info='A SAX Locator'/>
    </function>
    <functype name='setDocumentLocatorSAXFunc' file='parser'>
      <info>Receive the document locator at startup, actually xmlDefaultSAXLocator. Everything is available on the context, so this is useless in our case.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='loc' type='xmlSAXLocatorPtr' info='A SAX Locator'/>
    </functype>
    <function name='setNamespace' file='SAX'>
      <info>Set the current element namespace.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='the namespace prefix'/>
    </function>
    <function name='startDocument' file='SAX'>
      <info>called when the document start being processed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </function>
    <functype name='startDocumentSAXFunc' file='parser'>
      <info>Called when the document start being processed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
    </functype>
    <function name='startElement' file='SAX'>
      <info>called when an opening tag has been processed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='fullname' type='const xmlChar *' info='The element name, including namespace prefix'/>
      <arg name='atts' type='const xmlChar **' info='An array of name/value attributes pairs, NULL terminated'/>
    </function>
    <functype name='startElementSAXFunc' file='parser'>
      <info>Called when an opening tag has been processed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The element name, including namespace prefix'/>
      <arg name='atts' type='const xmlChar **' info='An array of name/value attributes pairs, NULL terminated'/>
    </functype>
    <function name='unparsedEntityDecl' file='SAX'>
      <info>What to do when an unparsed entity declaration is parsed</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The name of the entity'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
      <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
    </function>
    <functype name='unparsedEntityDeclSAXFunc' file='parser'>
      <info>What to do when an unparsed entity declaration is parsed.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
      <arg name='name' type='const xmlChar *' info='The name of the entity'/>
      <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
      <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
      <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
    </functype>
    <function name='valuePop' file='xpathInternals'>
      <info>Pops the top XPath object from the value stack</info>
      <return type='xmlXPathObjectPtr' info='the XPath object just removed'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath evaluation context'/>
    </function>
    <function name='valuePush' file='xpathInternals'>
      <info>Pushes a new XPath object on top of the value stack</info>
      <return type='int' info='the number of items on the value stack'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath evaluation context'/>
      <arg name='value' type='xmlXPathObjectPtr' info='the XPath object'/>
    </function>
    <functype name='warningSAXFunc' file='parser'>
      <info>Display and format a warning messages, callback.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </functype>
    <functype name='xlinkExtendedLinkFunk' file='xlink'>
      <info>This is the prototype for a extended link detection callback.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='user data pointer'/>
      <arg name='node' type='xmlNodePtr' info='the node carrying the link'/>
      <arg name='nbLocators' type='int' info='the number of locators detected on the link'/>
      <arg name='hrefs' type='const xlinkHRef *' info='pointer to the array of locator hrefs'/>
      <arg name='roles' type='const xlinkRole *' info='pointer to the array of locator roles'/>
      <arg name='nbArcs' type='int' info='the number of arcs detected on the link'/>
      <arg name='from' type='const xlinkRole *' info='pointer to the array of source roles found on the arcs'/>
      <arg name='to' type='const xlinkRole *' info='pointer to the array of target roles found on the arcs'/>
      <arg name='show' type='xlinkShow *' info='array of values for the show attributes found on the arcs'/>
      <arg name='actuate' type='xlinkActuate *' info='array of values for the actuate attributes found on the arcs'/>
      <arg name='nbTitles' type='int' info='the number of titles detected on the link'/>
      <arg name='titles' type='const xlinkTitle *' info=''/>
      <arg name='langs' type='const xmlChar **' info='array of xml:lang values for the titles'/>
    </functype>
    <functype name='xlinkExtendedLinkSetFunk' file='xlink'>
      <info>This is the prototype for a extended link set detection callback.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='user data pointer'/>
      <arg name='node' type='xmlNodePtr' info='the node carrying the link'/>
      <arg name='nbLocators' type='int' info='the number of locators detected on the link'/>
      <arg name='hrefs' type='const xlinkHRef *' info='pointer to the array of locator hrefs'/>
      <arg name='roles' type='const xlinkRole *' info='pointer to the array of locator roles'/>
      <arg name='nbTitles' type='int' info='the number of titles detected on the link'/>
      <arg name='titles' type='const xlinkTitle *' info=''/>
      <arg name='langs' type='const xmlChar **' info='array of xml:lang values for the titles'/>
    </functype>
    <function name='xlinkGetDefaultDetect' file='xlink'>
      <info>Get the default xlink detection routine</info>
      <return type='xlinkNodeDetectFunc' info='the current function or NULL;'/>
    </function>
    <function name='xlinkGetDefaultHandler' file='xlink'>
      <info>Get the default xlink handler.</info>
      <return type='xlinkHandlerPtr' info='the current xlinkHandlerPtr value.'/>
    </function>
    <function name='xlinkIsLink' file='xlink'>
      <info>Check whether the given node carries the attributes needed to be a link element (or is one of the linking elements issued from the (X)HTML DtDs). This routine don&apos;t try to do full checking of the link validity but tries to detect and return the appropriate link type.</info>
      <return type='xlinkType' info='the xlinkType of the node (XLINK_TYPE_NONE if there is no link detected.'/>
      <arg name='doc' type='xmlDocPtr' info='the document containing the node'/>
      <arg name='node' type='xmlNodePtr' info='the node pointer itself'/>
    </function>
    <functype name='xlinkNodeDetectFunc' file='xlink'>
      <info>This is the prototype for the link detection routine. It calls the default link detection callbacks upon link detection.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='user data pointer'/>
      <arg name='node' type='xmlNodePtr' info='the node to check'/>
    </functype>
    <function name='xlinkSetDefaultDetect' file='xlink'>
      <info>Set the default xlink detection routine</info>
      <return type='void'/>
      <arg name='func' type='xlinkNodeDetectFunc' info='pointer to the new detection routine.'/>
    </function>
    <function name='xlinkSetDefaultHandler' file='xlink'>
      <info>Set the default xlink handlers</info>
      <return type='void'/>
      <arg name='handler' type='xlinkHandlerPtr' info='the new value for the xlink handler block'/>
    </function>
    <functype name='xlinkSimpleLinkFunk' file='xlink'>
      <info>This is the prototype for a simple link detection callback.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='user data pointer'/>
      <arg name='node' type='xmlNodePtr' info='the node carrying the link'/>
      <arg name='href' type='const xlinkHRef' info='the target of the link'/>
      <arg name='role' type='const xlinkRole' info='the role string'/>
      <arg name='title' type='const xlinkTitle' info='the link title'/>
    </functype>
    <function name='xmlACatalogAdd' file='catalog'>
      <info>Add an entry in the catalog, it may overwrite existing but different entries.</info>
      <return type='int' info='0 if successful, -1 otherwise'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='type' type='const xmlChar *' info='the type of record to add to the catalog'/>
      <arg name='orig' type='const xmlChar *' info='the system, public or prefix to match'/>
      <arg name='replace' type='const xmlChar *' info='the replacement value for the match'/>
    </function>
    <function name='xmlACatalogDump' file='catalog'>
      <info>Free up all the memory associated with catalogs</info>
      <return type='void'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='out' type='FILE *' info='the file.'/>
    </function>
    <function name='xmlACatalogRemove' file='catalog'>
      <info>Remove an entry from the catalog</info>
      <return type='int' info='the number of entries removed if successful, -1 otherwise'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='value' type='const xmlChar *' info='the value to remove'/>
    </function>
    <function name='xmlACatalogResolve' file='catalog'>
      <info>Do a complete resolution lookup of an External Identifier</info>
      <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
      <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
    </function>
    <function name='xmlACatalogResolvePublic' file='catalog'>
      <info>Try to lookup the system ID associated to a public ID in that catalog</info>
      <return type='xmlChar *' info='the system ID if found or NULL otherwise, the value returned must be freed by the caller.'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
    </function>
    <function name='xmlACatalogResolveSystem' file='catalog'>
      <info>Try to lookup the catalog resource for a system ID</info>
      <return type='xmlChar *' info='the system ID if found or NULL otherwise, the value returned must be freed by the caller.'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='sysID' type='const xmlChar *' info='the public ID string'/>
    </function>
    <function name='xmlACatalogResolveURI' file='catalog'>
      <info>Do a complete resolution lookup of an URI</info>
      <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
      <arg name='URI' type='const xmlChar *' info='the URI'/>
    </function>
    <function name='xmlAddAttributeDecl' file='valid'>
      <info>Register a new attribute declaration Note that @tree becomes the ownership of the DTD</info>
      <return type='xmlAttributePtr' info='NULL if not new, otherwise the attribute decl'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='dtd' type='xmlDtdPtr' info='pointer to the DTD'/>
      <arg name='elem' type='const xmlChar *' info='the element name'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='ns' type='const xmlChar *' info='the attribute namespace prefix'/>
      <arg name='type' type='xmlAttributeType' info='the attribute type'/>
      <arg name='def' type='xmlAttributeDefault' info='the attribute default type'/>
      <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
      <arg name='tree' type='xmlEnumerationPtr' info='if it&apos;s an enumeration, the associated list'/>
    </function>
    <function name='xmlAddChild' file='tree'>
      <info>Add a new node to @parent, at the end of the child (or property) list merging adjacent TEXT nodes (in which case @cur is freed) If the new node was already inserted in a document it is first unlinked from its existing context. If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
      <return type='xmlNodePtr' info='the child or NULL in case of error.'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
      <arg name='cur' type='xmlNodePtr' info='the child node'/>
    </function>
    <function name='xmlAddChildList' file='tree'>
      <info>Add a list of node at the end of the child list of the parent merging adjacent TEXT nodes (@cur may be freed)</info>
      <return type='xmlNodePtr' info='the last child or NULL in case of error.'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
      <arg name='cur' type='xmlNodePtr' info='the first node in the list'/>
    </function>
    <function name='xmlAddDocEntity' file='entities'>
      <info>Register a new entity for this document.</info>
      <return type='xmlEntityPtr' info='a pointer to the entity or NULL in case of error'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
      <arg name='SystemID' type='const xmlChar *' info='the entity system ID if available'/>
      <arg name='content' type='const xmlChar *' info='the entity content'/>
    </function>
    <function name='xmlAddDtdEntity' file='entities'>
      <info>Register a new entity for this document DTD external subset.</info>
      <return type='xmlEntityPtr' info='a pointer to the entity or NULL in case of error'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
      <arg name='SystemID' type='const xmlChar *' info='the entity system ID if available'/>
      <arg name='content' type='const xmlChar *' info='the entity content'/>
    </function>
    <function name='xmlAddElementDecl' file='valid'>
      <info>Register a new element declaration</info>
      <return type='xmlElementPtr' info='NULL if not, otherwise the entity'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='dtd' type='xmlDtdPtr' info='pointer to the DTD'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='type' type='xmlElementTypeVal' info='the element type'/>
      <arg name='content' type='xmlElementContentPtr' info='the element content tree or NULL'/>
    </function>
    <function name='xmlAddEncodingAlias' file='encoding'>
      <info>Registers and alias @alias for an encoding named @name. Existing alias will be overwritten.</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='name' type='const char *' info='the encoding name as parsed, in UTF-8 format (ASCII actually)'/>
      <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
    </function>
    <function name='xmlAddID' file='valid'>
      <info>Register a new id declaration</info>
      <return type='xmlIDPtr' info='NULL if not, otherwise the new xmlIDPtr'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
      <arg name='value' type='const xmlChar *' info='the value name'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute holding the ID'/>
    </function>
    <function name='xmlAddNextSibling' file='tree'>
      <info>Add a new node @elem as the next sibling of @cur If the new node was already inserted in a document it is first unlinked from its existing context. As a result of text merging @elem may be freed. If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
      <return type='xmlNodePtr' info='the new node or NULL in case of error.'/>
      <arg name='cur' type='xmlNodePtr' info='the child node'/>
      <arg name='elem' type='xmlNodePtr' info='the new node'/>
    </function>
    <function name='xmlAddNotationDecl' file='valid'>
      <info>Register a new notation declaration</info>
      <return type='xmlNotationPtr' info='NULL if not, otherwise the entity'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='dtd' type='xmlDtdPtr' info='pointer to the DTD'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
      <arg name='PublicID' type='const xmlChar *' info='the public identifier or NULL'/>
      <arg name='SystemID' type='const xmlChar *' info='the system identifier or NULL'/>
    </function>
    <function name='xmlAddPrevSibling' file='tree'>
      <info>Add a new node @elem as the previous sibling of @cur merging adjacent TEXT nodes (@elem may be freed) If the new node was already inserted in a document it is first unlinked from its existing context. If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
      <return type='xmlNodePtr' info='the new node or NULL in case of error.'/>
      <arg name='cur' type='xmlNodePtr' info='the child node'/>
      <arg name='elem' type='xmlNodePtr' info='the new node'/>
    </function>
    <function name='xmlAddRef' file='valid'>
      <info>Register a new ref declaration</info>
      <return type='xmlRefPtr' info='NULL if not, otherwise the new xmlRefPtr'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
      <arg name='value' type='const xmlChar *' info='the value name'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute holding the Ref'/>
    </function>
    <function name='xmlAddSibling' file='tree'>
      <info>Add a new element @elem to the list of siblings of @cur merging adjacent TEXT nodes (@elem may be freed) If the new element was already inserted in a document it is first unlinked from its existing context.</info>
      <return type='xmlNodePtr' info='the new element or NULL in case of error.'/>
      <arg name='cur' type='xmlNodePtr' info='the child node'/>
      <arg name='elem' type='xmlNodePtr' info='the new node'/>
    </function>
    <function name='xmlAllocOutputBuffer' file='xmlIO'>
      <info>Create a buffered parser output</info>
      <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
    </function>
    <function name='xmlAllocParserInputBuffer' file='xmlIO'>
      <info>Create a buffered parser input for progressive parsing</info>
      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlAutomataCompile' file='xmlautomata'>
      <info>Compile the automata into a Reg Exp ready for being executed. The automata should be free after this point.</info>
      <return type='xmlRegexpPtr' info='the compiled regexp or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
    </function>
    <function name='xmlAutomataGetInitState' file='xmlautomata'>
      <info>Initial state lookup</info>
      <return type='xmlAutomataStatePtr' info='the initial state of the automata'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
    </function>
    <function name='xmlAutomataIsDeterminist' file='xmlautomata'>
      <info>Checks if an automata is determinist.</info>
      <return type='int' info='1 if true, 0 if not, and -1 in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
    </function>
    <function name='xmlAutomataNewAllTrans' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds a an ALL transition from the @from state to the target state. That transition is an epsilon transition allowed only when all transitions from the @from node have been activated.</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
      <arg name='lax' type='int' info='allow to transition if not all all transitions have been activated'/>
    </function>
    <function name='xmlAutomataNewCountTrans' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and whose number is between @min and @max</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
      <arg name='min' type='int' info='the minimum successive occurences of token'/>
      <arg name='max' type='int' info='the maximum successive occurences of token'/>
      <arg name='data' type='void *' info='data associated to the transition'/>
    </function>
    <function name='xmlAutomataNewCountedTrans' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds an epsilon transition from the @from state to the target state which will increment the counter provided</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
      <arg name='counter' type='int' info='the counter associated to that transition'/>
    </function>
    <function name='xmlAutomataNewCounter' file='xmlautomata'>
      <info>Create a new counter</info>
      <return type='int' info='the counter number or -1 in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='min' type='int' info='the minimal value on the counter'/>
      <arg name='max' type='int' info='the maximal value on the counter'/>
    </function>
    <function name='xmlAutomataNewCounterTrans' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds an epsilon transition from the @from state to the target state which will be allowed only if the counter is within the right range.</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
      <arg name='counter' type='int' info='the counter associated to that transition'/>
    </function>
    <function name='xmlAutomataNewEpsilon' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds a an epsilon transition from the @from state to the target state</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
    </function>
    <function name='xmlAutomataNewOnceTrans' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and whose number is between @min and @max, moreover that transistion can only be crossed once.</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
      <arg name='min' type='int' info='the minimum successive occurences of token'/>
      <arg name='max' type='int' info='the maximum successive occurences of token'/>
      <arg name='data' type='void *' info='data associated to the transition'/>
    </function>
    <function name='xmlAutomataNewState' file='xmlautomata'>
      <info>Create a new disconnected state in the automata</info>
      <return type='xmlAutomataStatePtr' info='the new state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
    </function>
    <function name='xmlAutomataNewTransition' file='xmlautomata'>
      <info>If @to is NULL, this create first a new target state in the automata and then adds a transition from the @from state to the target state activated by the value of @token</info>
      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
      <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
      <arg name='data' type='void *' info='data passed to the callback function if the transition is activated'/>
    </function>
    <function name='xmlAutomataSetFinalState' file='xmlautomata'>
      <info>Makes that state a final state</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
      <arg name='state' type='xmlAutomataStatePtr' info='a state in this automata'/>
    </function>
    <function name='xmlBoolToText' file='debugXML'>
      <info>Convenient way to turn bool into text</info>
      <return type='const char *' info='a pointer to either &quot;True&quot; or &quot;False&quot;'/>
      <arg name='boolval' type='int' info='a bool to turn into text'/>
    </function>
    <function name='xmlBufferAdd' file='tree'>
      <info>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
      <arg name='str' type='const xmlChar *' info='the #xmlChar string'/>
      <arg name='len' type='int' info='the number of #xmlChar to add'/>
    </function>
    <function name='xmlBufferAddHead' file='tree'>
      <info>Add a string range to the beginning of an XML buffer. if len == -1, the length of @str is recomputed.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
      <arg name='str' type='const xmlChar *' info='the #xmlChar string'/>
      <arg name='len' type='int' info='the number of #xmlChar to add'/>
    </function>
    <function name='xmlBufferCCat' file='tree'>
      <info>Append a zero terminated C string to an XML buffer.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
      <arg name='str' type='const char *' info='the C char string'/>
    </function>
    <function name='xmlBufferCat' file='tree'>
      <info>Append a zero terminated string to an XML buffer.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
      <arg name='str' type='const xmlChar *' info='the #xmlChar string'/>
    </function>
    <function name='xmlBufferContent' file='tree'>
      <info>Function to extract the content of a buffer</info>
      <return type='const xmlChar *' info='the internal content'/>
      <arg name='buf' type='const xmlBufferPtr' info='the buffer'/>
    </function>
    <function name='xmlBufferCreate' file='tree'>
      <info>routine to create an XML buffer.</info>
      <return type='xmlBufferPtr' info='the new structure.'/>
    </function>
    <function name='xmlBufferCreateSize' file='tree'>
      <info>routine to create an XML buffer.</info>
      <return type='xmlBufferPtr' info='the new structure.'/>
      <arg name='size' type='size_t' info='initial size of buffer'/>
    </function>
    <function name='xmlBufferDump' file='tree'>
      <info>Dumps an XML buffer to  a FILE *.</info>
      <return type='int' info='the number of #xmlChar written'/>
      <arg name='file' type='FILE *' info='the file output'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
    </function>
    <function name='xmlBufferEmpty' file='tree'>
      <info>empty a buffer.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
    </function>
    <function name='xmlBufferFree' file='tree'>
      <info>Frees an XML buffer. It frees both the content and the structure which encapsulate it.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to free'/>
    </function>
    <function name='xmlBufferGrow' file='tree'>
      <info>Grow the available space of an XML buffer.</info>
      <return type='int' info='the new available space or -1 in case of error'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
      <arg name='len' type='unsigned int' info='the minimum free size to allocate'/>
    </function>
    <function name='xmlBufferLength' file='tree'>
      <info>Function to get the length of a buffer</info>
      <return type='int' info='the length of data in the internal content'/>
      <arg name='buf' type='const xmlBufferPtr' info='the buffer'/>
    </function>
    <function name='xmlBufferResize' file='tree'>
      <info>Resize a buffer to accommodate minimum size of @size.</info>
      <return type='int' info='0 in case of problems, 1 otherwise'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to resize'/>
      <arg name='size' type='unsigned int' info='the desired size'/>
    </function>
    <function name='xmlBufferSetAllocationScheme' file='tree'>
      <info>Sets the allocation scheme for this buffer</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to tune'/>
      <arg name='scheme' type='xmlBufferAllocationScheme' info='allocation scheme to use'/>
    </function>
    <function name='xmlBufferShrink' file='tree'>
      <info>Remove the beginning of an XML buffer.</info>
      <return type='int' info='the number of #xmlChar removed, or -1 in case of failure.'/>
      <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
      <arg name='len' type='unsigned int' info='the number of xmlChar to remove'/>
    </function>
    <function name='xmlBufferWriteCHAR' file='tree'>
      <info>routine which manages and grows an output buffer. This one adds xmlChars at the end of the buffer.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer'/>
      <arg name='string' type='const xmlChar *' info='the string to add'/>
    </function>
    <function name='xmlBufferWriteChar' file='tree'>
      <info>routine which manage and grows an output buffer. This one add C chars at the end of the array.</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='string' type='const char *' info='the string to add'/>
    </function>
    <function name='xmlBufferWriteQuotedString' file='tree'>
      <info>routine which manage and grows an output buffer. This one writes a quoted or double quoted #xmlChar string, checking first if it holds quote or double-quotes internally</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='string' type='const xmlChar *' info='the string to add'/>
    </function>
    <function name='xmlBuildURI' file='uri'>
      <info>Computes he final URI of the reference done by checking that the given URI is valid, and building the final URI using the base URI. This is processed according to section 5.2 of the RFC 2396  5.2. Resolving Relative References to Absolute Form</info>
      <return type='xmlChar *' info='a new URI string (to be freed by the caller) or NULL in case of error.'/>
      <arg name='URI' type='const xmlChar *' info='the URI instance found in the document'/>
      <arg name='base' type='const xmlChar *' info='the base value'/>
    </function>
    <function name='xmlC14NDocDumpMemory' file='c14n'>
      <info>Dumps the canonized image of given XML document into memory. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
      <return type='int' info='the number of bytes written on success or a negative value on fail'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='the nodes set to be included in the canonized image or NULL if all document nodes should be included'/>
      <arg name='exclusive' type='int' info='the exclusive flag (0 - non-exclusive canonicalization; otherwise - exclusive canonicalization)'/>
      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
      <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
      <arg name='doc_txt_ptr' type='xmlChar **' info='the memory pointer for allocated canonical XML text; the caller of this functions is responsible for calling xmlFree() to free allocated memory'/>
    </function>
    <function name='xmlC14NDocSave' file='c14n'>
      <info>Dumps the canonized image of given XML document into the file. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
      <return type='int' info='the number of bytes written success or a negative value on fail'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='the nodes set to be included in the canonized image or NULL if all document nodes should be included'/>
      <arg name='exclusive' type='int' info='the exclusive flag (0 - non-exclusive canonicalization; otherwise - exclusive canonicalization)'/>
      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
      <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
      <arg name='filename' type='const char *' info='the filename to store canonical XML image'/>
      <arg name='compression' type='int' info='the compression level (zlib requred): -1 - libxml default, 0 - uncompressed, &gt;0 - compression level'/>
    </function>
    <function name='xmlC14NDocSaveTo' file='c14n'>
      <info>Dumps the canonized image of given XML document into the provided buffer. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
      <return type='int' info='non-negative value on success or a negative value on fail'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='the nodes set to be included in the canonized image or NULL if all document nodes should be included'/>
      <arg name='exclusive' type='int' info='the exclusive flag (0 - non-exclusive canonicalization; otherwise - exclusive canonicalization)'/>
      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
      <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output'/>
    </function>
    <function name='xmlC14NExecute' file='c14n'>
      <info>Dumps the canonized image of given XML document into the provided buffer. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
      <return type='int' info='non-negative value on success or a negative value on fail'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
      <arg name='is_visible_callback' type='xmlC14NIsVisibleCallback' info='the function to use to determine is node visible or not'/>
      <arg name='user_data' type='void *' info='the first parameter for @is_visible_callback function (in most cases, it is nodes set)'/>
      <arg name='exclusive' type='int' info='the exclusive flag (0 - non-exclusive canonicalization; otherwise - exclusive canonicalization)'/>
      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
      <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output'/>
    </function>
    <functype name='xmlC14NIsVisibleCallback' file='c14n'>
      <info></info>
      <return type='int' info=''/>
      <arg name='user_data' type='void *' info=''/>
      <arg name='node' type='xmlNodePtr' info=''/>
      <arg name='parent' type='xmlNodePtr' info=''/>
    </functype>
    <function name='xmlCatalogAdd' file='catalog'>
      <info>Add an entry in the catalog, it may overwrite existing but different entries. If called before any other catalog routine, allows to override the default shared catalog put in place by xmlInitializeCatalog();</info>
      <return type='int' info='0 if successful, -1 otherwise'/>
      <arg name='type' type='const xmlChar *' info='the type of record to add to the catalog'/>
      <arg name='orig' type='const xmlChar *' info='the system, public or prefix to match'/>
      <arg name='replace' type='const xmlChar *' info='the replacement value for the match'/>
    </function>
    <function name='xmlCatalogAddLocal' file='catalog'>
      <info>Add the new entry to the catalog list</info>
      <return type='void *' info='the updated list'/>
      <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
      <arg name='URL' type='const xmlChar *' info='the URL to a new local catalog'/>
    </function>
    <function name='xmlCatalogCleanup' file='catalog'>
      <info>Free up all the memory associated with catalogs</info>
      <return type='void'/>
    </function>
    <function name='xmlCatalogConvert' file='catalog'>
      <info>Convert all the SGML catalog entries as XML ones</info>
      <return type='int' info='the number of entries converted if successful, -1 otherwise'/>
    </function>
    <function name='xmlCatalogDump' file='catalog'>
      <info>Free up all the memory associated with catalogs</info>
      <return type='void'/>
      <arg name='out' type='FILE *' info='the file.'/>
    </function>
    <function name='xmlCatalogFreeLocal' file='catalog'>
      <info>Free up the memory associated to the catalog list</info>
      <return type='void'/>
      <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
    </function>
    <function name='xmlCatalogGetDefaults' file='catalog'>
      <info>Used to get the user preference w.r.t. to what catalogs should be accepted</info>
      <return type='xmlCatalogAllow' info='the current xmlCatalogAllow value'/>
    </function>
    <function name='xmlCatalogGetPublic' file='catalog'>
      <info>Try to lookup the system ID associated to a public ID DEPRECATED, use xmlCatalogResolvePublic()</info>
      <return type='const xmlChar *' info='the system ID if found or NULL otherwise.'/>
      <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
    </function>
    <function name='xmlCatalogGetSystem' file='catalog'>
      <info>Try to lookup the system ID associated to a public ID DEPRECATED, use xmlCatalogResolveSystem()</info>
      <return type='const xmlChar *' info='the system ID if found or NULL otherwise.'/>
      <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
    </function>
    <function name='xmlCatalogIsEmpty' file='catalog'>
      <info>Check is a catalog is empty</info>
      <return type='int' info='1 if the catalog is empty, 0 if not, amd -1 in case of error.'/>
      <arg name='catal' type='xmlCatalogPtr' info='should this create an SGML catalog'/>
    </function>
    <function name='xmlCatalogLocalResolve' file='catalog'>
      <info>Do a complete resolution lookup of an External Identifier using a document&apos;s private catalog list</info>
      <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
      <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
      <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
      <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
    </function>
    <function name='xmlCatalogLocalResolveURI' file='catalog'>
      <info>Do a complete resolution lookup of an URI using a document&apos;s private catalog list</info>
      <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
      <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
      <arg name='URI' type='const xmlChar *' info='the URI'/>
    </function>
    <function name='xmlCatalogRemove' file='catalog'>
      <info>Remove an entry from the catalog</info>
      <return type='int' info='the number of entries removed if successful, -1 otherwise'/>
      <arg name='value' type='const xmlChar *' info='the value to remove'/>
    </function>
    <function name='xmlCatalogResolve' file='catalog'>
      <info>Do a complete resolution lookup of an External Identifier</info>
      <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
      <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
      <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
    </function>
    <function name='xmlCatalogResolvePublic' file='catalog'>
      <info>Try to lookup the system ID associated to a public ID</info>
      <return type='xmlChar *' info='the system ID if found or NULL otherwise, the value returned must be freed by the caller.'/>
      <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
    </function>
    <function name='xmlCatalogResolveSystem' file='catalog'>
      <info>Try to lookup the catalog resource for a system ID</info>
      <return type='xmlChar *' info='the system ID if found or NULL otherwise, the value returned must be freed by the caller.'/>
      <arg name='sysID' type='const xmlChar *' info='the public ID string'/>
    </function>
    <function name='xmlCatalogResolveURI' file='catalog'>
      <info>Do a complete resolution lookup of an URI</info>
      <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
      <arg name='URI' type='const xmlChar *' info='the URI'/>
    </function>
    <function name='xmlCatalogSetDebug' file='catalog'>
      <info>Used to set the debug level for catalog operation, 0 disable debugging, 1 enable it</info>
      <return type='int' info='the previous value of the catalog debugging level'/>
      <arg name='level' type='int' info='the debug level of catalogs required'/>
    </function>
    <function name='xmlCatalogSetDefaultPrefer' file='catalog'>
      <info>Allows to set the preference between public and system for deletion in XML Catalog resolution. C.f. section 4.1.1 of the spec Values accepted are XML_CATA_PREFER_PUBLIC or XML_CATA_PREFER_SYSTEM</info>
      <return type='xmlCatalogPrefer' info='the previous value of the default preference for delegation'/>
      <arg name='prefer' type='xmlCatalogPrefer' info='the default preference for delegation'/>
    </function>
    <function name='xmlCatalogSetDefaults' file='catalog'>
      <info>Used to set the user preference w.r.t. to what catalogs should be accepted</info>
      <return type='void'/>
      <arg name='allow' type='xmlCatalogAllow' info='what catalogs should be accepted'/>
    </function>
    <function name='xmlCharEncCloseFunc' file='encoding'>
      <info>Generic front-end for encoding handler close function</info>
      <return type='int' info='0 if success, or -1 in case of error'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
    </function>
    <function name='xmlCharEncFirstLine' file='encoding'>
      <info>Front-end for the encoding handler input function, but handle only the very first line, i.e. limit itself to 45 chars.</info>
      <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
      <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
      <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
    </function>
    <function name='xmlCharEncInFunc' file='encoding'>
      <info>Generic front-end for the encoding handler input function</info>
      <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char encoding transformation data structure'/>
      <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
      <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
    </function>
    <function name='xmlCharEncOutFunc' file='encoding'>
      <info>Generic front-end for the encoding handler output function a first call with @in == NULL has to be made firs to initiate the output in case of non-stateless encoding needing to initiate their state or the output (like the BOM in UTF16). In case of UTF8 sequence conversion errors for the given encoder, the content will be automatically remapped to a CharRef sequence.</info>
      <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
      <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
      <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
      <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
    </function>
    <functype name='xmlCharEncodingInputFunc' file='encoding'>
      <info>Take a block of chars in the original encoding and try to convert it to an UTF-8 block of chars out.</info>
      <return type='int' info='the number of byte written, or -1 by lack of space, or -2 if the transcoding failed. The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictiable. The value of @outlen after return is the number of octets consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the UTF-8 result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of chars in the original encoding'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </functype>
    <functype name='xmlCharEncodingOutputFunc' file='encoding'>
      <info>Take a block of UTF-8 chars in and try to convert it to an other encoding. Note: a first call designed to produce heading info is called with in = NULL. If stateful this should also initialize the encoder state.</info>
      <return type='int' info='the number of byte written, or -1 by lack of space, or -2 if the transcoding failed. The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictiable. The value of @outlen after return is the number of ocetes consumed.'/>
      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
      <arg name='outlen' type='int *' info='the length of @out'/>
      <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
      <arg name='inlen' type='int *' info='the length of @in'/>
    </functype>
    <function name='xmlCharStrdup' file='parser'>
      <info>a strdup for char&apos;s to xmlChar&apos;s</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const char *' info='the input char *'/>
    </function>
    <function name='xmlCharStrndup' file='parser'>
      <info>a strndup for char&apos;s to xmlChar&apos;s</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const char *' info='the input char *'/>
      <arg name='len' type='int' info='the len of @cur'/>
    </function>
    <function name='xmlCheckFilename' file='xmlIO'>
      <info>function checks to see if @path is a valid source (file, socket...) for XML.  if stat is not available on the target machine,</info>
      <return type='int' info='1.  if stat fails, returns 0 (if calling stat on the filename fails, it can&apos;t be right). if stat succeeds and the file is a directory, returns 2.  otherwise returns 1.'/>
      <arg name='path' type='const char *' info='the path to check'/>
    </function>
    <function name='xmlCheckLanguageID' file='parserInternals'>
      <info>Checks that the value conforms to the LanguageID production:  NOTE: this is somewhat deprecated, those productions were removed from the XML Second edition.  [33] LanguageID ::= Langcode (&apos;-&apos; Subcode)* [34] Langcode ::= ISO639Code |  IanaCode |  UserCode [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= (&apos;i&apos; | &apos;I&apos;) &apos;-&apos; ([a-z] | [A-Z])+ [37] UserCode ::= (&apos;x&apos; | &apos;X&apos;) &apos;-&apos; ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+</info>
      <return type='int' info='1 if correct 0 otherwise'/>
      <arg name='lang' type='const xmlChar *' info='pointer to the string value'/>
    </function>
    <function name='xmlCheckUTF8' file='encoding'>
      <info>Checks @utf for being valid utf-8. @utf is assumed to be null-terminated. This function is not super-strict, as it will allow longer utf-8 sequences than necessary. Note that Java is capable of producing these sequences if provoked. Also note, this routine checks for the 4-byte maximum size, but does not check for 0x10ffff maximum value.</info>
      <return type='int' info='value: true if @utf is valid.'/>
      <arg name='utf' type='const unsigned char *' info='Pointer to putative utf-8 encoded string.'/>
    </function>
    <function name='xmlCheckVersion' file='xmlversion'>
      <info>check the compiled lib version against the include one. This can warn or immediately kill the application</info>
      <return type='void'/>
      <arg name='version' type='int' info='the include version number'/>
    </function>
    <function name='xmlCleanupCharEncodingHandlers' file='encoding'>
      <info>Cleanup the memory allocated for the char encoding support, it unregisters all the encoding handlers and the aliases.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupEncodingAliases' file='encoding'>
      <info>Unregisters all aliases</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupInputCallbacks' file='xmlIO'>
      <info>clears the entire input callback table. this includes the compiled-in I/O.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupOutputCallbacks' file='xmlIO'>
      <info>clears the entire output callback table. this includes the compiled-in I/O callbacks.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupParser' file='parser'>
      <info>Cleanup function for the XML parser. It tries to reclaim all parsing related global memory allocated for the parser processing. It doesn&apos;t deallocate any document related memory. Calling this function should not prevent reusing the parser.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupPredefinedEntities' file='entities'>
      <info>Cleanup up the predefined entities table.</info>
      <return type='void'/>
    </function>
    <function name='xmlCleanupThreads' file='threads'>
      <info>xmlCleanupThreads() is used to to cleanup all the thread related data of the libxml2 library once processing has ended.</info>
      <return type='void'/>
    </function>
    <function name='xmlClearNodeInfoSeq' file='parser'>
      <info>-- Clear (release memory and reinitialize) node info sequence</info>
      <return type='void'/>
      <arg name='seq' type='xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
    </function>
    <function name='xmlClearParserCtxt' file='parser'>
      <info>Clear (release owned resources) and reinitialize a parser context</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlConvertSGMLCatalog' file='catalog'>
      <info>Convert all the SGML catalog entries as XML ones</info>
      <return type='int' info='the number of entries converted if successful, -1 otherwise'/>
      <arg name='catal' type='xmlCatalogPtr' info='the catalog'/>
    </function>
    <function name='xmlCopyAttributeTable' file='valid'>
      <info>Build a copy of an attribute table.</info>
      <return type='xmlAttributeTablePtr' info='the new xmlAttributeTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
    </function>
    <function name='xmlCopyChar' file='parserInternals'>
      <info>append the char value in the array</info>
      <return type='int' info='the number of xmlChar written'/>
      <arg name='len' type='int' info='Ignored, compatibility'/>
      <arg name='out' type='xmlChar *' info='pointer to an array of xmlChar'/>
      <arg name='val' type='int' info='the char value'/>
    </function>
    <function name='xmlCopyCharMultiByte' file='parserInternals'>
      <info>append the char value in the array</info>
      <return type='int' info='the number of xmlChar written'/>
      <arg name='out' type='xmlChar *' info='pointer to an array of xmlChar'/>
      <arg name='val' type='int' info='the char value'/>
    </function>
    <function name='xmlCopyDoc' file='tree'>
      <info>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</info>
      <return type='xmlDocPtr' info='a new #xmlDocPtr, or NULL in case of error.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='recursive' type='int' info='if 1 do a recursive copy.'/>
    </function>
    <function name='xmlCopyDtd' file='tree'>
      <info>Do a copy of the dtd.</info>
      <return type='xmlDtdPtr' info='a new #xmlDtdPtr, or NULL in case of error.'/>
      <arg name='dtd' type='xmlDtdPtr' info='the dtd'/>
    </function>
    <function name='xmlCopyElementContent' file='valid'>
      <info>Build a copy of an element content description.</info>
      <return type='xmlElementContentPtr' info='the new xmlElementContentPtr or NULL in case of error.'/>
      <arg name='cur' type='xmlElementContentPtr' info='An element content pointer.'/>
    </function>
    <function name='xmlCopyElementTable' file='valid'>
      <info>Build a copy of an element table.</info>
      <return type='xmlElementTablePtr' info='the new xmlElementTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlElementTablePtr' info='An element table'/>
    </function>
    <function name='xmlCopyEntitiesTable' file='entities'>
      <info>Build a copy of an entity table.</info>
      <return type='xmlEntitiesTablePtr' info='the new xmlEntitiesTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
    </function>
    <function name='xmlCopyEnumeration' file='valid'>
      <info>Copy an enumeration attribute node (recursive).</info>
      <return type='xmlEnumerationPtr' info='the xmlEnumerationPtr just created or NULL in case of error.'/>
      <arg name='cur' type='xmlEnumerationPtr' info='the tree to copy.'/>
    </function>
    <function name='xmlCopyNamespace' file='tree'>
      <info>Do a copy of the namespace.</info>
      <return type='xmlNsPtr' info='a new #xmlNsPtr, or NULL in case of error.'/>
      <arg name='cur' type='xmlNsPtr' info='the namespace'/>
    </function>
    <function name='xmlCopyNamespaceList' file='tree'>
      <info>Do a copy of an namespace list.</info>
      <return type='xmlNsPtr' info='a new #xmlNsPtr, or NULL in case of error.'/>
      <arg name='cur' type='xmlNsPtr' info='the first namespace'/>
    </function>
    <function name='xmlCopyNode' file='tree'>
      <info>Do a copy of the node.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='node' type='const xmlNodePtr' info='the node'/>
      <arg name='recursive' type='int' info='if 1 do a recursive copy.'/>
    </function>
    <function name='xmlCopyNodeList' file='tree'>
      <info>Do a recursive copy of the node list.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='node' type='const xmlNodePtr' info='the first node in the list.'/>
    </function>
    <function name='xmlCopyNotationTable' file='valid'>
      <info>Build a copy of a notation table.</info>
      <return type='xmlNotationTablePtr' info='the new xmlNotationTablePtr or NULL in case of error.'/>
      <arg name='table' type='xmlNotationTablePtr' info='A notation table'/>
    </function>
    <function name='xmlCopyProp' file='tree'>
      <info>Do a copy of the attribute.</info>
      <return type='xmlAttrPtr' info='a new #xmlAttrPtr, or NULL in case of error.'/>
      <arg name='target' type='xmlNodePtr' info='the element where the attribute will be grafted'/>
      <arg name='cur' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlCopyPropList' file='tree'>
      <info>Do a copy of an attribute list.</info>
      <return type='xmlAttrPtr' info='a new #xmlAttrPtr, or NULL in case of error.'/>
      <arg name='target' type='xmlNodePtr' info='the element where the attributes will be grafted'/>
      <arg name='cur' type='xmlAttrPtr' info='the first attribute'/>
    </function>
    <function name='xmlCreateDocParserCtxt' file='parser'>
      <info>Creates a parser context for an XML in-memory document.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
    </function>
    <function name='xmlCreateEntitiesTable' file='entities'>
      <info>create and initialize an empty entities hash table.</info>
      <return type='xmlEntitiesTablePtr' info='the xmlEntitiesTablePtr just created or NULL in case of error.'/>
    </function>
    <function name='xmlCreateEntityParserCtxt' file='parserInternals'>
      <info>Create a parser context for an external entity Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='URL' type='const xmlChar *' info='the entity URL'/>
      <arg name='ID' type='const xmlChar *' info='the entity PUBLIC ID'/>
      <arg name='base' type='const xmlChar *' info='a possible base for the target URI'/>
    </function>
    <function name='xmlCreateEnumeration' file='valid'>
      <info>create and initialize an enumeration attribute node.</info>
      <return type='xmlEnumerationPtr' info='the xmlEnumerationPtr just created or NULL in case of error.'/>
      <arg name='name' type='xmlChar *' info='the enumeration name or NULL'/>
    </function>
    <function name='xmlCreateFileParserCtxt' file='parserInternals'>
      <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlCreateIOParserCtxt' file='parser'>
      <info>Create a parser context for using the XML parser with an existing I/O stream</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
      <arg name='ioctx' type='void *' info='an I/O handler'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlCreateIntSubset' file='tree'>
      <info>Create the internal subset of a document</info>
      <return type='xmlDtdPtr' info='a pointer to the new DTD structure'/>
      <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
      <arg name='name' type='const xmlChar *' info='the DTD name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external (PUBLIC) ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
    </function>
    <function name='xmlCreateMemoryParserCtxt' file='parserInternals'>
      <info>Create a parser context for an XML in-memory document.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
    </function>
    <function name='xmlCreatePushParserCtxt' file='parser'>
      <info>Create a parser context for using the XML parser in push mode. If @buffer and @size are non-NULL, the data is used to detect the encoding.  The remaining characters will be parsed so they don&apos;t need to be fed in again through xmlParseChunk. To allow content encoding detection, @size should be &gt;= 4 The value of @filename is used for fetching external entities and error/warning reports.</info>
      <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='chunk' type='const char *' info='a pointer to an array of chars'/>
      <arg name='size' type='int' info='number of chars in the array'/>
      <arg name='filename' type='const char *' info='an optional file name or URI'/>
    </function>
    <function name='xmlCreateURI' file='uri'>
      <info>Simply creates an empty xmlURI</info>
      <return type='xmlURIPtr' info='the new structure or NULL in case of error'/>
    </function>
    <function name='xmlCurrentChar' file='parserInternals'>
      <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer. Implement the end of line normalization: 2.11 End-of-Line Handling Wherever an external parsed entity or the literal entity value of an internal parsed entity contains either the literal two-character sequence &quot;#xD#xA&quot; or a standalone literal #xD, an XML processor must pass to the application the single character #xA. This behavior can conveniently be produced by normalizing all line breaks to #xA on input, before parsing.)</info>
      <return type='int' info='the current char value and its length'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
      <arg name='len' type='int *' info='pointer to the length of the char read'/>
    </function>
    <function name='xmlDebugDumpAttr' file='debugXML'>
      <info>Dumps debug information for the attribute</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpAttrList' file='debugXML'>
      <info>Dumps debug information for the attribute list</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute list'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpDTD' file='debugXML'>
      <info>Dumps debug information for the DTD</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='dtd' type='xmlDtdPtr' info='the DTD'/>
    </function>
    <function name='xmlDebugDumpDocument' file='debugXML'>
      <info>Dumps debug information for the document, it&apos;s recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpDocumentHead' file='debugXML'>
      <info>Dumps debug information cncerning the document, not recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpEntities' file='debugXML'>
      <info>Dumps debug information for all the entities in use by the document</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDebugDumpNode' file='debugXML'>
      <info>Dumps debug information for the element node, it is recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpNodeList' file='debugXML'>
      <info>Dumps debug information for the list of element node, it is recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node list'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpOneNode' file='debugXML'>
      <info>Dumps debug information for the element node, it is not recursive</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlDebugDumpString' file='debugXML'>
      <info>Dumps informations about the string, shorten it if necessary</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='str' type='const xmlChar *' info='the string'/>
    </function>
    <function name='xmlDecodeEntities' file='parserInternals'>
      <info>This function is deprecated, we now always process entities content through xmlStringDecodeEntities  TODO: remove it in next major release.  [67] Reference ::= EntityRef | CharRef  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done. The caller must deallocate it !'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='len' type='int' info='the len to decode (in bytes !), -1 for no size limit'/>
      <arg name='what' type='int' info='combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF'/>
      <arg name='end' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
      <arg name='end2' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
      <arg name='end3' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
    </function>
    <function name='xmlDefaultSAXHandlerInit' file='SAX'>
      <info>Initialize the default SAX handler</info>
      <return type='void'/>
    </function>
    <function name='xmlDelEncodingAlias' file='encoding'>
      <info>Unregisters an encoding alias @alias</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
    </function>
    <function name='xmlDeregisterNodeDefault' file='globals'>
      <info></info>
      <return type='xmlDeregisterNodeFunc' info='the previous value of the deregistration function'/>
      <arg name='func' type='xmlDeregisterNodeFunc' info='function pointer to the new DeregisterNodeFunc'/>
    </function>
    <functype name='xmlDeregisterNodeFunc' file='globals'>
      <info></info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info=''/>
    </functype>
    <function name='xmlDetectCharEncoding' file='encoding'>
      <info>Guess the encoding of the entity using the first bytes of the entity content accordingly of the non-normative appendix F of the XML-1.0 recommendation.</info>
      <return type='xmlCharEncoding' info='one of the XML_CHAR_ENCODING_... values.'/>
      <arg name='in' type='const unsigned char *' info='a pointer to the first bytes of the XML entity, must be at least 4 bytes long.'/>
      <arg name='len' type='int' info='pointer to the length of the buffer'/>
    </function>
    <function name='xmlDocCopyNode' file='tree'>
      <info>Do a copy of the node to a given document.</info>
      <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
      <arg name='node' type='const xmlNodePtr' info='the node'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='recursive' type='int' info='if 1 do a recursive copy.'/>
    </function>
    <function name='xmlDocDump' file='tree'>
      <info>Dump an XML document to an open FILE.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='f' type='FILE *' info='the FILE*'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDocDumpFormatMemory' file='tree'>
      <info>Dump an XML document in memory and return the #xmlChar * and it&apos;s size. It&apos;s up to the caller to free the memory with xmlFree(). Note that format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
      <return type='void'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
      <arg name='size' type='int *' info='OUT: the memory length'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlDocDumpFormatMemoryEnc' file='tree'>
      <info>Dump the current DOM tree into memory using the character encoding specified by the caller.  Note it is up to the caller of this function to free the allocated memory with xmlFree(). Note that format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
      <return type='void'/>
      <arg name='out_doc' type='xmlDocPtr' info='Document to generate XML text from'/>
      <arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
      <arg name='doc_txt_len' type='int *' info='Length of the generated XML text'/>
      <arg name='txt_encoding' type='const char *' info='Character encoding to use when generating XML text'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlDocDumpMemory' file='tree'>
      <info>Dump an XML document in memory and return the #xmlChar * and it&apos;s size. It&apos;s up to the caller to free the memory with xmlFree().</info>
      <return type='void'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
      <arg name='size' type='int *' info='OUT: the memory length'/>
    </function>
    <function name='xmlDocDumpMemoryEnc' file='tree'>
      <info>Dump the current DOM tree into memory using the character encoding specified by the caller.  Note it is up to the caller of this function to free the allocated memory with xmlFree().</info>
      <return type='void'/>
      <arg name='out_doc' type='xmlDocPtr' info='Document to generate XML text from'/>
      <arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
      <arg name='doc_txt_len' type='int *' info='Length of the generated XML text'/>
      <arg name='txt_encoding' type='const char *' info='Character encoding to use when generating XML text'/>
    </function>
    <function name='xmlDocFormatDump' file='tree'>
      <info>Dump an XML document to an open FILE.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='f' type='FILE *' info='the FILE*'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlDocGetRootElement' file='tree'>
      <info>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
      <return type='xmlNodePtr' info='the #xmlNodePtr for the root or NULL'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlDocSetRootElement' file='tree'>
      <info>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
      <return type='xmlNodePtr' info='the old root element if any was found'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='root' type='xmlNodePtr' info='the new document root element'/>
    </function>
    <function name='xmlDumpAttributeDecl' file='valid'>
      <info>This will dump the content of the attribute declaration as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='attr' type='xmlAttributePtr' info='An attribute declaration'/>
    </function>
    <function name='xmlDumpAttributeTable' file='valid'>
      <info>This will dump the content of the attribute table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
    </function>
    <function name='xmlDumpElementDecl' file='valid'>
      <info>This will dump the content of the element declaration as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='elem' type='xmlElementPtr' info='An element table'/>
    </function>
    <function name='xmlDumpElementTable' file='valid'>
      <info>This will dump the content of the element table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='table' type='xmlElementTablePtr' info='An element table'/>
    </function>
    <function name='xmlDumpEntitiesTable' file='entities'>
      <info>This will dump the content of the entity table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='An XML buffer.'/>
      <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
    </function>
    <function name='xmlDumpEntityDecl' file='entities'>
      <info>This will dump the content of the entity table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='An XML buffer.'/>
      <arg name='ent' type='xmlEntityPtr' info='An entity table'/>
    </function>
    <function name='xmlDumpNotationDecl' file='valid'>
      <info>This will dump the content the notation declaration as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='nota' type='xmlNotationPtr' info='A notation declaration'/>
    </function>
    <function name='xmlDumpNotationTable' file='valid'>
      <info>This will dump the content of the notation table as an XML DTD definition</info>
      <return type='void'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='table' type='xmlNotationTablePtr' info='A notation table'/>
    </function>
    <function name='xmlElemDump' file='tree'>
      <info>Dump an XML/HTML node, recursive behaviour, children are printed too.</info>
      <return type='void'/>
      <arg name='f' type='FILE *' info='the FILE * for the output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
    </function>
    <function name='xmlEncodeEntities' file='entities'>
      <info>Do a global encoding of a string, replacing the predefined entities and non ASCII values with their entities and CharRef counterparts.  TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary compatibility  People must migrate their code to xmlEncodeEntitiesReentrant ! This routine will issue a warning when encountered.</info>
      <return type='const xmlChar *' info='A newly allocated string with the substitution done.'/>
      <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
    </function>
    <function name='xmlEncodeEntitiesReentrant' file='entities'>
      <info>Do a global encoding of a string, replacing the predefined entities and non ASCII values with their entities and CharRef counterparts. Contrary to xmlEncodeEntities, this routine is reentrant, and result must be deallocated.</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
      <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
    </function>
    <function name='xmlEncodeSpecialChars' file='entities'>
      <info>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
      <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
    </function>
    <functype name='xmlEntityReferenceFunc' file='parserInternals'>
      <info>Callback function used when one needs to be able to track back the provenance of a chunk of nodes inherited from an entity replacement.</info>
      <return type='void'/>
      <arg name='ent' type='xmlEntityPtr' info='the entity'/>
      <arg name='firstNode' type='xmlNodePtr' info='the fist node in the chunk'/>
      <arg name='lastNode' type='xmlNodePtr' info='the last nod in the chunk'/>
    </functype>
    <functype name='xmlExternalEntityLoader' file='parser'>
      <info>External entity loaders types.</info>
      <return type='xmlParserInputPtr' info='the entity input parser.'/>
      <arg name='URL' type='const char *' info='The System ID of the resource requested'/>
      <arg name='ID' type='const char *' info='The Public ID of the resource requested'/>
      <arg name='context' type='xmlParserCtxtPtr' info='the XML parser context'/>
    </functype>
    <function name='xmlFileClose' file='xmlIO'>
      <info>Close an I/O channel</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='context' type='void *' info='the I/O context'/>
    </function>
    <function name='xmlFileMatch' file='xmlIO'>
      <info>input from FILE *</info>
      <return type='int' info='1 if matches, 0 otherwise'/>
      <arg name='filename' type='const char *' info='the URI for matching'/>
    </function>
    <function name='xmlFileOpen' file='xmlIO'>
      <info>input from FILE *, supports compressed input if @filename is &quot; &quot; then the standard input is used</info>
      <return type='void *' info='an I/O context or NULL in case of error'/>
      <arg name='filename' type='const char *' info='the URI for matching'/>
    </function>
    <function name='xmlFileRead' file='xmlIO'>
      <info>Read @len bytes to @buffer from the I/O channel.</info>
      <return type='int' info='the number of bytes written'/>
      <arg name='context' type='void *' info='the I/O context'/>
      <arg name='buffer' type='char *' info='where to drop data'/>
      <arg name='len' type='int' info='number of bytes to write'/>
    </function>
    <function name='xmlFindCharEncodingHandler' file='encoding'>
      <info>Search in the registered set the handler able to read/write that encoding.</info>
      <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if not found'/>
      <arg name='name' type='const char *' info='a string describing the char encoding.'/>
    </function>
    <function name='xmlFreeAttributeTable' file='valid'>
      <info>Deallocate the memory used by an entities hash table.</info>
      <return type='void'/>
      <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
    </function>
    <function name='xmlFreeAutomata' file='xmlautomata'>
      <info>Free an automata</info>
      <return type='void'/>
      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
    </function>
    <function name='xmlFreeCatalog' file='catalog'>
      <info>Free the memory allocated to a Catalog</info>
      <return type='void'/>
      <arg name='catal' type='xmlCatalogPtr' info='a Catalog entry'/>
    </function>
    <function name='xmlFreeDoc' file='tree'>
      <info>Free up all the structures used by a document, tree included.</info>
      <return type='void'/>
      <arg name='cur' type='xmlDocPtr' info='pointer to the document'/>
    </function>
    <function name='xmlFreeDtd' file='tree'>
      <info>Free a DTD structure.</info>
      <return type='void'/>
      <arg name='cur' type='xmlDtdPtr' info='the DTD structure to free up'/>
    </function>
    <function name='xmlFreeElementContent' file='valid'>
      <info>Free an element content structure. This is a recursive call !</info>
      <return type='void'/>
      <arg name='cur' type='xmlElementContentPtr' info='the element content tree to free'/>
    </function>
    <function name='xmlFreeElementTable' file='valid'>
      <info>Deallocate the memory used by an element hash table.</info>
      <return type='void'/>
      <arg name='table' type='xmlElementTablePtr' info='An element table'/>
    </function>
    <function name='xmlFreeEntitiesTable' file='entities'>
      <info>Deallocate the memory used by an entities hash table.</info>
      <return type='void'/>
      <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
    </function>
    <function name='xmlFreeEnumeration' file='valid'>
      <info>free an enumeration attribute node (recursive).</info>
      <return type='void'/>
      <arg name='cur' type='xmlEnumerationPtr' info='the tree to free.'/>
    </function>
    <functype name='xmlFreeFunc' file='xmlmemory'>
      <info>Signature for a free() implementation.</info>
      <return type='void'/>
      <arg name='mem' type='void *' info='an already allocated block of memory'/>
    </functype>
    <function name='xmlFreeIDTable' file='valid'>
      <info>Deallocate the memory used by an ID hash table.</info>
      <return type='void'/>
      <arg name='table' type='xmlIDTablePtr' info='An id table'/>
    </function>
    <function name='xmlFreeInputStream' file='parserInternals'>
      <info>Free up an input stream.</info>
      <return type='void'/>
      <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr'/>
    </function>
    <function name='xmlFreeMutex' file='threads'>
      <info>xmlFreeMutex() is used to reclaim resources associated with a libxml2 token struct.</info>
      <return type='void'/>
      <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
    </function>
    <function name='xmlFreeNode' file='tree'>
      <info>Free a node, this is a recursive behaviour, all the children are freed too. This doesn&apos;t unlink the child from the list, use xmlUnlinkNode() first.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlFreeNodeList' file='tree'>
      <info>Free a node and all its siblings, this is a recursive behaviour, all the children are freed too.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the first node in the list'/>
    </function>
    <function name='xmlFreeNotationTable' file='valid'>
      <info>Deallocate the memory used by an entities hash table.</info>
      <return type='void'/>
      <arg name='table' type='xmlNotationTablePtr' info='An notation table'/>
    </function>
    <function name='xmlFreeNs' file='tree'>
      <info>Free up the structures associated to a namespace</info>
      <return type='void'/>
      <arg name='cur' type='xmlNsPtr' info='the namespace pointer'/>
    </function>
    <function name='xmlFreeNsList' file='tree'>
      <info>Free up all the structures associated to the chained namespaces.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNsPtr' info='the first namespace pointer'/>
    </function>
    <function name='xmlFreeParserCtxt' file='parser'>
      <info>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlFreeParserInputBuffer' file='xmlIO'>
      <info>Free up the memory used by a buffered parser input</info>
      <return type='void'/>
      <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
    </function>
    <function name='xmlFreeProp' file='tree'>
      <info>Free one attribute, all the content is freed too</info>
      <return type='void'/>
      <arg name='cur' type='xmlAttrPtr' info='an attribute'/>
    </function>
    <function name='xmlFreePropList' file='tree'>
      <info>Free a property and all its siblings, all the children are freed too.</info>
      <return type='void'/>
      <arg name='cur' type='xmlAttrPtr' info='the first property in the list'/>
    </function>
    <function name='xmlFreeRMutex' file='threads'>
      <info>xmlRFreeMutex() is used to reclaim resources associated with a reentrant mutex.</info>
      <return type='void'/>
      <arg name='tok' type='xmlRMutexPtr' info='the reentrant mutex'/>
    </function>
    <function name='xmlFreeRefTable' file='valid'>
      <info>Deallocate the memory used by an Ref hash table.</info>
      <return type='void'/>
      <arg name='table' type='xmlRefTablePtr' info='An ref table'/>
    </function>
    <function name='xmlFreeTextReader' file='xmlreader'>
      <info>Deallocate all the resources associated to the reader</info>
      <return type='void'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr'/>
    </function>
    <function name='xmlFreeURI' file='uri'>
      <info>Free up the xmlURI struct</info>
      <return type='void'/>
      <arg name='uri' type='xmlURIPtr' info='pointer to an xmlURI'/>
    </function>
    <functype name='xmlGenericErrorFunc' file='xmlerror'>
      <info>Signature of the function to use when there is an error and no parsing or validity context available .</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='a parsing context'/>
      <arg name='msg' type='const char *' info='the message'/>
      <arg name='...' type='...' info='the extra arguments of the varags to format the message'/>
    </functype>
    <function name='xmlGetBufferAllocationScheme' file='tree'>
      <info>Types are XML_BUFFER_ALLOC_EXACT - use exact sizes, keeps memory usage down XML_BUFFER_ALLOC_DOUBLEIT - double buffer when extra needed, improves performance</info>
      <return type='xmlBufferAllocationScheme' info='the current allocation scheme'/>
    </function>
    <function name='xmlGetCharEncodingHandler' file='encoding'>
      <info>Search in the registered set the handler able to read/write that encoding.</info>
      <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if not found'/>
      <arg name='enc' type='xmlCharEncoding' info='an xmlCharEncoding value.'/>
    </function>
    <function name='xmlGetCharEncodingName' file='encoding'>
      <info>The &quot;canonical&quot; name for XML encoding. C.f. http://www.w3.org/TR/REC-xml#charencoding Section 4.3.3  Character Encoding in Entities</info>
      <return type='const char *' info='the canonical name for the given encoding'/>
      <arg name='enc' type='xmlCharEncoding' info='the encoding'/>
    </function>
    <function name='xmlGetCompressMode' file='tree'>
      <info>get the default compression mode used, ZLIB based.</info>
      <return type='int' info='0 (uncompressed) to 9 (max compression)'/>
    </function>
    <function name='xmlGetDocCompressMode' file='tree'>
      <info>get the compression ratio for a document, ZLIB based</info>
      <return type='int' info='0 (uncompressed) to 9 (max compression)'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlGetDocEntity' file='entities'>
      <info>Do an entity lookup in the document entity hash table and</info>
      <return type='xmlEntityPtr' info='the corresponding entity, otherwise a lookup is done in the predefined entities too.  Returns A pointer to the entity structure or NULL if not found.'/>
      <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
    </function>
    <function name='xmlGetDtdAttrDesc' file='valid'>
      <info>Search the DTD for the description of this attribute on this element.</info>
      <return type='xmlAttributePtr' info='the xmlAttributePtr if found or NULL'/>
      <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
      <arg name='elem' type='const xmlChar *' info='the element name'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
    </function>
    <function name='xmlGetDtdElementDesc' file='valid'>
      <info>Search the DTD for the description of this element</info>
      <return type='xmlElementPtr' info='the xmlElementPtr if found or NULL'/>
      <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
      <arg name='name' type='const xmlChar *' info='the element name'/>
    </function>
    <function name='xmlGetDtdEntity' file='entities'>
      <info>Do an entity lookup in the DTD entity hash table and</info>
      <return type='xmlEntityPtr' info='the corresponding entity, if found. Note: the first argument is the document node, not the DTD node.  Returns A pointer to the entity structure or NULL if not found.'/>
      <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
    </function>
    <function name='xmlGetDtdNotationDesc' file='valid'>
      <info>Search the DTD for the description of this notation</info>
      <return type='xmlNotationPtr' info='the xmlNotationPtr if found or NULL'/>
      <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
      <arg name='name' type='const xmlChar *' info='the notation name'/>
    </function>
    <function name='xmlGetDtdQAttrDesc' file='valid'>
      <info>Search the DTD for the description of this qualified attribute on this element.</info>
      <return type='xmlAttributePtr' info='the xmlAttributePtr if found or NULL'/>
      <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
      <arg name='elem' type='const xmlChar *' info='the element name'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='prefix' type='const xmlChar *' info='the attribute namespace prefix'/>
    </function>
    <function name='xmlGetDtdQElementDesc' file='valid'>
      <info>Search the DTD for the description of this element</info>
      <return type='xmlElementPtr' info='the xmlElementPtr if found or NULL'/>
      <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
      <arg name='name' type='const xmlChar *' info='the element name'/>
      <arg name='prefix' type='const xmlChar *' info='the element namespace prefix'/>
    </function>
    <function name='xmlGetEncodingAlias' file='encoding'>
      <info>Lookup an encoding name for the given alias.</info>
      <return type='const char *' info='NULL if not found the original name otherwise'/>
      <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
    </function>
    <function name='xmlGetExternalEntityLoader' file='parser'>
      <info>Get the default external entity resolver function for the application</info>
      <return type='xmlExternalEntityLoader' info='the xmlExternalEntityLoader function pointer'/>
    </function>
    <function name='xmlGetFeature' file='parser'>
      <info>Read the current value of one feature of this parser instance</info>
      <return type='int' info='-1 in case or error, 0 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML/HTML parser context'/>
      <arg name='name' type='const char *' info='the feature name'/>
      <arg name='result' type='void *' info='location to store the result'/>
    </function>
    <function name='xmlGetFeaturesList' file='parser'>
      <info>Copy at most *@len feature names into the @result array</info>
      <return type='int' info='-1 in case or error, or the total number of features, len is updated with the number of strings copied, strings must not be deallocated'/>
      <arg name='len' type='int *' info='the length of the features name array (input/output)'/>
      <arg name='result' type='const char **' info='an array of string to be filled with the features name.'/>
    </function>
    <function name='xmlGetGlobalState' file='threads'>
      <info>xmlGetGlobalState() is called to retrieve the global state for a thread.</info>
      <return type='xmlGlobalStatePtr' info='the thread global state or NULL in case of error'/>
    </function>
    <function name='xmlGetID' file='valid'>
      <info>Search the attribute declaring the given ID</info>
      <return type='xmlAttrPtr' info='NULL if not found, otherwise the xmlAttrPtr defining the ID'/>
      <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
      <arg name='ID' type='const xmlChar *' info='the ID value'/>
    </function>
    <function name='xmlGetIntSubset' file='tree'>
      <info>Get the internal subset of a document</info>
      <return type='xmlDtdPtr' info='a pointer to the DTD structure or NULL if not found'/>
      <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
    </function>
    <function name='xmlGetLastChild' file='tree'>
      <info>Search the last child of a node.</info>
      <return type='xmlNodePtr' info='the last child or NULL if none.'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
    </function>
    <function name='xmlGetLineNo' file='tree'>
      <info>Get line number of node. this requires activation of this option before invoking the parser by calling xmlLineNumbersDefault(1)</info>
      <return type='long' info='the line number if successful, -1 otherwise'/>
      <arg name='node' type='xmlNodePtr' info='valid node'/>
    </function>
    <function name='xmlGetNodePath' file='tree'>
      <info>Build a structure based Path for the given node</info>
      <return type='xmlChar *' info='the new path or NULL in case of error. The caller must free the returned string'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlGetNsList' file='tree'>
      <info>Search all the namespace applying to a given element.</info>
      <return type='xmlNsPtr *' info='an NULL terminated array of all the #xmlNsPtr found that need to be freed by the caller or NULL if no namespace if defined'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='node' type='xmlNodePtr' info='the current node'/>
    </function>
    <function name='xmlGetNsProp' file='tree'>
      <info>Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
      <return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
    </function>
    <function name='xmlGetParameterEntity' file='entities'>
      <info>Do an entity lookup in the internal and external subsets and</info>
      <return type='xmlEntityPtr' info='the corresponding parameter entity, if found.  Returns A pointer to the entity structure or NULL if not found.'/>
      <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
    </function>
    <function name='xmlGetPredefinedEntity' file='entities'>
      <info>Check whether this name is an predefined entity.</info>
      <return type='xmlEntityPtr' info='NULL if not, otherwise the entity'/>
      <arg name='name' type='const xmlChar *' info='the entity name'/>
    </function>
    <function name='xmlGetProp' file='tree'>
      <info>Search and get the value of an attribute associated to a node This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
      <return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
    </function>
    <function name='xmlGetRefs' file='valid'>
      <info>Find the set of references for the supplied ID.</info>
      <return type='xmlListPtr' info='NULL if not found, otherwise node set for the ID.'/>
      <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
      <arg name='ID' type='const xmlChar *' info='the ID value'/>
    </function>
    <function name='xmlGetThreadId' file='threads'>
      <info>xmlGetThreadId() find the current thread ID number</info>
      <return type='int' info='the current thread ID number'/>
    </function>
    <function name='xmlGetUTF8Char' file='encoding'>
      <info>Read one UTF8 Char from @utf</info>
      <return type='int' info='the char value or -1 in case of error and update @len with the number of bytes used'/>
      <arg name='utf' type='const unsigned char *' info='a sequence of UTF-8 encoded bytes'/>
      <arg name='len' type='int *' info='a pointer to @bytes len'/>
    </function>
    <function name='xmlHandleEntity' file='parserInternals'>
      <info>Default handling of defined entities, when should we define a new input stream ? When do we just handle that as a set of chars ?  OBSOLETE: to be removed at some point.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='entity' type='xmlEntityPtr' info='an XML entity pointer.'/>
    </function>
    <function name='xmlHasNsProp' file='tree'>
      <info>Search for an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
      <return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
    </function>
    <function name='xmlHasProp' file='tree'>
      <info>Search an attribute associated to a node This function also looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
      <return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
    </function>
    <function name='xmlHashAddEntry' file='hash'>
      <info>Add the @userdata to the hash @table. This can later be retrieved by using the @name. Duplicate names generate errors.</info>
      <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='userdata' type='void *' info='a pointer to the userdata'/>
    </function>
    <function name='xmlHashAddEntry2' file='hash'>
      <info>Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Duplicate tuples generate errors.</info>
      <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='userdata' type='void *' info='a pointer to the userdata'/>
    </function>
    <function name='xmlHashAddEntry3' file='hash'>
      <info>Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Duplicate entries generate errors.</info>
      <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
      <arg name='userdata' type='void *' info='a pointer to the userdata'/>
    </function>
    <functype name='xmlHashCopier' file='hash'>
      <info>Callback to copy data from a hash.</info>
      <return type='void *' info='a copy of the data or NULL in case of error.'/>
      <arg name='payload' type='void *' info='the data in the hash'/>
      <arg name='name' type='xmlChar *' info='the name associated'/>
    </functype>
    <function name='xmlHashCopy' file='hash'>
      <info>Scan the hash @table and applied @f to each value.</info>
      <return type='xmlHashTablePtr' info='the new table or NULL in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='f' type='xmlHashCopier' info='the copier function for items in the hash'/>
    </function>
    <function name='xmlHashCreate' file='hash'>
      <info>Create a new xmlHashTablePtr.</info>
      <return type='xmlHashTablePtr' info='the newly created object, or NULL if an error occured.'/>
      <arg name='size' type='int' info='the size of the hash table'/>
    </function>
    <functype name='xmlHashDeallocator' file='hash'>
      <info>Callback to free data from a hash.</info>
      <return type='void'/>
      <arg name='payload' type='void *' info='the data in the hash'/>
      <arg name='name' type='xmlChar *' info='the name associated'/>
    </functype>
    <function name='xmlHashFree' file='hash'>
      <info>Free the hash @table and its contents. The userdata is deallocated with @f if provided.</info>
      <return type='void'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for items in the hash'/>
    </function>
    <function name='xmlHashLookup' file='hash'>
      <info>Find the userdata specified by the @name.</info>
      <return type='void *' info='the pointer to the userdata'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
    </function>
    <function name='xmlHashLookup2' file='hash'>
      <info>Find the userdata specified by the (@name, @name2) tuple.</info>
      <return type='void *' info='the pointer to the userdata'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
    </function>
    <function name='xmlHashLookup3' file='hash'>
      <info>Find the userdata specified by the (@name, @name2, @name3) tuple.</info>
      <return type='void *' info='the a pointer to the userdata'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
    </function>
    <function name='xmlHashRemoveEntry' file='hash'>
      <info>Find the userdata specified by the @name and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.</info>
      <return type='int' info='0 if the removal succeeded and -1 in case of error or not found.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for removed item (if any)'/>
    </function>
    <function name='xmlHashRemoveEntry2' file='hash'>
      <info>Find the userdata specified by the (@name, @name2) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.</info>
      <return type='int' info='0 if the removal succeeded and -1 in case of error or not found.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for removed item (if any)'/>
    </function>
    <function name='xmlHashRemoveEntry3' file='hash'>
      <info>Find the userdata specified by the (@name, @name2, @name3) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.</info>
      <return type='int' info='0 if the removal succeeded and -1 in case of error or not found.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for removed item (if any)'/>
    </function>
    <function name='xmlHashScan' file='hash'>
      <info>Scan the hash @table and applied @f to each value.</info>
      <return type='void'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='f' type='xmlHashScanner' info='the scanner function for items in the hash'/>
      <arg name='data' type='void *' info='extra data passed to f'/>
    </function>
    <function name='xmlHashScan3' file='hash'>
      <info>Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match.</info>
      <return type='void'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata or NULL'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata or NULL'/>
      <arg name='name3' type='const xmlChar *' info='a third name of the userdata or NULL'/>
      <arg name='f' type='xmlHashScanner' info='the scanner function for items in the hash'/>
      <arg name='data' type='void *' info='extra data passed to f'/>
    </function>
    <function name='xmlHashScanFull' file='hash'>
      <info>Scan the hash @table and applied @f to each value.</info>
      <return type='void'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='f' type='xmlHashScannerFull' info='the scanner function for items in the hash'/>
      <arg name='data' type='void *' info='extra data passed to f'/>
    </function>
    <function name='xmlHashScanFull3' file='hash'>
      <info>Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match.</info>
      <return type='void'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata or NULL'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata or NULL'/>
      <arg name='name3' type='const xmlChar *' info='a third name of the userdata or NULL'/>
      <arg name='f' type='xmlHashScannerFull' info='the scanner function for items in the hash'/>
      <arg name='data' type='void *' info='extra data passed to f'/>
    </function>
    <functype name='xmlHashScanner' file='hash'>
      <info>Callback when scanning data in a hash with the simple scanner.</info>
      <return type='void'/>
      <arg name='payload' type='void *' info='the data in the hash'/>
      <arg name='data' type='void *' info='extra scannner data'/>
      <arg name='name' type='xmlChar *' info='the name associated'/>
    </functype>
    <functype name='xmlHashScannerFull' file='hash'>
      <info>Callback when scanning data in a hash with the full scanner.</info>
      <return type='void'/>
      <arg name='payload' type='void *' info='the data in the hash'/>
      <arg name='data' type='void *' info='extra scannner data'/>
      <arg name='name' type='const xmlChar *' info='the name associated'/>
      <arg name='name2' type='const xmlChar *' info='the second name associated'/>
      <arg name='name3' type='const xmlChar *' info='the third name associated'/>
    </functype>
    <function name='xmlHashSize' file='hash'>
      <info>Query the number of elements installed in the hash @table.</info>
      <return type='int' info='the number of elements in the hash table or -1 in case of error'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
    </function>
    <function name='xmlHashUpdateEntry' file='hash'>
      <info>Add the @userdata to the hash @table. This can later be retrieved by using the @name. Existing entry for this @name will be removed and freed with @f if found.</info>
      <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='userdata' type='void *' info='a pointer to the userdata'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for replaced item (if any)'/>
    </function>
    <function name='xmlHashUpdateEntry2' file='hash'>
      <info>Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Existing entry for this tuple will be removed and freed with @f if found.</info>
      <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='userdata' type='void *' info='a pointer to the userdata'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for replaced item (if any)'/>
    </function>
    <function name='xmlHashUpdateEntry3' file='hash'>
      <info>Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Existing entry for this tuple will be removed and freed with @f if found.</info>
      <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
      <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
      <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
      <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
      <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
      <arg name='userdata' type='void *' info='a pointer to the userdata'/>
      <arg name='f' type='xmlHashDeallocator' info='the deallocator function for replaced item (if any)'/>
    </function>
    <function name='xmlIOFTPClose' file='xmlIO'>
      <info>Close an FTP I/O channel</info>
      <return type='int' info='0'/>
      <arg name='context' type='void *' info='the I/O context'/>
    </function>
    <function name='xmlIOFTPMatch' file='xmlIO'>
      <info>check if the URI matches an FTP one</info>
      <return type='int' info='1 if matches, 0 otherwise'/>
      <arg name='filename' type='const char *' info='the URI for matching'/>
    </function>
    <function name='xmlIOFTPOpen' file='xmlIO'>
      <info>open an FTP I/O channel</info>
      <return type='void *' info='an I/O context or NULL in case of error'/>
      <arg name='filename' type='const char *' info='the URI for matching'/>
    </function>
    <function name='xmlIOFTPRead' file='xmlIO'>
      <info>Read @len bytes to @buffer from the I/O channel.</info>
      <return type='int' info='the number of bytes written'/>
      <arg name='context' type='void *' info='the I/O context'/>
      <arg name='buffer' type='char *' info='where to drop data'/>
      <arg name='len' type='int' info='number of bytes to write'/>
    </function>
    <function name='xmlIOHTTPClose' file='xmlIO'>
      <info>Close an HTTP I/O channel</info>
      <return type='int' info='0'/>
      <arg name='context' type='void *' info='the I/O context'/>
    </function>
    <function name='xmlIOHTTPMatch' file='xmlIO'>
      <info>check if the URI matches an HTTP one</info>
      <return type='int' info='1 if matches, 0 otherwise'/>
      <arg name='filename' type='const char *' info='the URI for matching'/>
    </function>
    <function name='xmlIOHTTPOpen' file='xmlIO'>
      <info>open an HTTP I/O channel</info>
      <return type='void *' info='an I/O context or NULL in case of error'/>
      <arg name='filename' type='const char *' info='the URI for matching'/>
    </function>
    <function name='xmlIOHTTPOpenW' file='xmlIO'>
      <info>Open a temporary buffer to collect the document for a subsequent HTTP POST request.  Non-static as is called from the output buffer creation routine.</info>
      <return type='void *' info='an I/O context or NULL in case of error.'/>
      <arg name='post_uri' type='const char *' info='The destination URI for the document'/>
      <arg name='compression' type='int' info='The compression desired for the document.'/>
    </function>
    <function name='xmlIOHTTPRead' file='xmlIO'>
      <info>Read @len bytes to @buffer from the I/O channel.</info>
      <return type='int' info='the number of bytes written'/>
      <arg name='context' type='void *' info='the I/O context'/>
      <arg name='buffer' type='char *' info='where to drop data'/>
      <arg name='len' type='int' info='number of bytes to write'/>
    </function>
    <function name='xmlIOParseDTD' file='parser'>
      <info>Load and parse a DTD</info>
      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error. @input will be freed at parsing end.'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block or NULL'/>
      <arg name='input' type='xmlParserInputBufferPtr' info='an Input Buffer'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlInitCharEncodingHandlers' file='encoding'>
      <info>Initialize the char encoding support, it registers the default encoding supported. NOTE: while public, this function usually doesn&apos;t need to be called in normal processing.</info>
      <return type='void'/>
    </function>
    <function name='xmlInitMemory' file='xmlmemory'>
      <info>Initialize the memory layer.</info>
      <return type='int' info='0 on success'/>
    </function>
    <function name='xmlInitNodeInfoSeq' file='parser'>
      <info>-- Initialize (set to initial state) node info sequence</info>
      <return type='void'/>
      <arg name='seq' type='xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
    </function>
    <function name='xmlInitParser' file='parser'>
      <info>Initialization function for the XML parser. This is not reentrant. Call once before processing in case of use in multithreaded programs.</info>
      <return type='void'/>
    </function>
    <function name='xmlInitParserCtxt' file='parser'>
      <info>Initialize a parser context</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlInitThreads' file='threads'>
      <info>xmlInitThreads() is used to to initialize all the thread related data of the libxml2 library.</info>
      <return type='void'/>
    </function>
    <function name='xmlInitializeCatalog' file='catalog'>
      <info>Do the catalog initialization. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
      <return type='void'/>
    </function>
    <function name='xmlInitializeGlobalState' file='globals'>
      <info>xmlInitializeGlobalState() initialize a global state with all the default values of the library.</info>
      <return type='void'/>
      <arg name='gs' type='xmlGlobalStatePtr' info='a pointer to a newly allocated global state'/>
    </function>
    <function name='xmlInitializePredefinedEntities' file='entities'>
      <info>Set up the predefined entities.</info>
      <return type='void'/>
    </function>
    <functype name='xmlInputCloseCallback' file='xmlIO'>
      <info>Callback used in the I/O Input API to close the resource</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='context' type='void *' info='an Input context'/>
    </functype>
    <functype name='xmlInputMatchCallback' file='xmlIO'>
      <info>Callback used in the I/O Input API to detect if the current handler can provide input fonctionnalities for this resource.</info>
      <return type='int' info='1 if yes and 0 if another Input module should be used'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlInputOpenCallback' file='xmlIO'>
      <info>Callback used in the I/O Input API to open the resource</info>
      <return type='void *' info='an Input context or NULL in case or error'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlInputReadCallback' file='xmlIO'>
      <info>Callback used in the I/O Input API to read the resource</info>
      <return type='int' info='the number of bytes read or -1 in case of error'/>
      <arg name='context' type='void *' info='an Input context'/>
      <arg name='buffer' type='char *' info='the buffer to store data read'/>
      <arg name='len' type='int' info='the length of the buffer in bytes'/>
    </functype>
    <function name='xmlIsBaseChar' file='parserInternals'>
      <info>Check whether the character is allowed by the production [85] BaseChar ::= ... long list see REC ...  VI is your friend ! :1,$ s/\[#x\([0-9A-Z]*\)-#x\([0-9A-Z]*\)\]/     (((c) &gt;= 0x\1) \&amp;\&amp; ((c) &lt;= 0x\2)) ||/ and :1,$ s/#x\([0-9A-Z]*\)/     ((c) == 0x\1) ||/</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsBlank' file='parserInternals'>
      <info>Check whether the character is allowed by the production [3] S ::= (#x20 | #x9 | #xD | #xA)+ Also available as a macro IS_BLANK()</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsBlankNode' file='tree'>
      <info>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</info>
      <return type='int' info='1 yes, 0 no'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlIsChar' file='parserInternals'>
      <info>Check whether the character is allowed by the production [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. Also available as a macro IS_CHAR()</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsCombining' file='parserInternals'>
      <info>Check whether the character is allowed by the production [87] CombiningChar ::= ... long list see REC ...</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsDigit' file='parserInternals'>
      <info>Check whether the character is allowed by the production [88] Digit ::= ... long list see REC ...</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsExtender' file='parserInternals'>
      <info>Check whether the character is allowed by the production [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsID' file='valid'>
      <info>Determine whether an attribute is of type ID. In case we have DTD(s) then this is done if DTD loading has been requested. In the case of HTML documents parsed with the HTML parser, then ID detection is done systematically.</info>
      <return type='int' info='0 or 1 depending on the lookup result'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='elem' type='xmlNodePtr' info='the element carrying the attribute'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlIsIdeographic' file='parserInternals'>
      <info>Check whether the character is allowed by the production [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsLetter' file='parserInternals'>
      <info>Check whether the character is allowed by the production [84] Letter ::= BaseChar | Ideographic</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsMainThread' file='threads'>
      <info>xmlIsMainThread() check whether the current thread is the main thread.</info>
      <return type='int' info='1 if the current thread is the main thread, 0 otherwise'/>
    </function>
    <function name='xmlIsMixedElement' file='valid'>
      <info>Search in the DtDs whether an element accept Mixed content (or ANY) basically if it is supposed to accept text childs</info>
      <return type='int' info='0 if no, 1 if yes, and -1 if no element description is available'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the element name'/>
    </function>
    <function name='xmlIsPubidChar' file='parserInternals'>
      <info>Check whether the character is allowed by the production [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-&apos;()+,./:=?;!*#@$_%]</info>
      <return type='int' info='0 if not, non-zero otherwise'/>
      <arg name='c' type='int' info='an unicode character (int)'/>
    </function>
    <function name='xmlIsRef' file='valid'>
      <info>Determine whether an attribute is of type Ref. In case we have DTD(s) then this is simple, otherwise we use an heuristic: name Ref (upper or lowercase).</info>
      <return type='int' info='0 or 1 depending on the lookup result'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='elem' type='xmlNodePtr' info='the element carrying the attribute'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlIsXHTML' file='tree'>
      <info>Try to find if the document correspond to an XHTML DTD</info>
      <return type='int' info='1 if true, 0 if not and -1 in case of error'/>
      <arg name='systemID' type='const xmlChar *' info='the system identifier'/>
      <arg name='publicID' type='const xmlChar *' info='the public identifier'/>
    </function>
    <function name='xmlKeepBlanksDefault' file='parser'>
      <info>Set and return the previous value for default blanks text nodes support. The 1.x version of the parser used an heuristic to try to detect ignorable white spaces. As a result the SAX callback was generating ignorableWhitespace() callbacks instead of characters() one, and when using the DOM output text nodes containing those blanks were not generated. The 2.x and later version will switch to the XML standard way and ignorableWhitespace() are only generated when running the parser in validating mode and when the current element doesn&apos;t allow CDATA or mixed content. This function is provided as a way to force the standard behavior on 1.X libs and to switch back to the old mode for compatibility when running 1.X client code on 2.X . Upgrade of 1.X code should be done by using xmlIsBlankNode() commodity function to detect the &quot;empty&quot; nodes generated. This value also affect autogeneration of indentation when saving code if blanks sections are kept, indentation is not generated.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlLineNumbersDefault' file='parser'>
      <info>Set and return the previous value for enabling line numbers in elements contents. This may break on old application and is turned off by default.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlLinkGetData' file='list'>
      <info>See Returns.</info>
      <return type='void *' info='a pointer to the data referenced from this link'/>
      <arg name='lk' type='xmlLinkPtr' info='a link'/>
    </function>
    <function name='xmlListAppend' file='list'>
      <info>Insert data in the ordered list at the end for this value</info>
      <return type='int' info='0 in case of success, 1 in case of failure'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='the data'/>
    </function>
    <function name='xmlListClear' file='list'>
      <info>Remove the all data in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListCopy' file='list'>
      <info>Move all the element from the old list in the new list</info>
      <return type='int' info='0 in case of success 1 in case of error'/>
      <arg name='cur' type='xmlListPtr' info='the new list'/>
      <arg name='old' type='const xmlListPtr' info='the old list'/>
    </function>
    <function name='xmlListCreate' file='list'>
      <info>Create a new list</info>
      <return type='xmlListPtr' info='the new list or NULL in case of error'/>
      <arg name='deallocator' type='xmlListDeallocator' info='an optional deallocator function'/>
      <arg name='compare' type='xmlListDataCompare' info='an optional comparison function'/>
    </function>
    <functype name='xmlListDataCompare' file='list'>
      <info>Callback function used to compare 2 data.</info>
      <return type='int' info='0 is equality, -1 or 1 otherwise depending on the ordering.'/>
      <arg name='data0' type='const void *' info='the first data'/>
      <arg name='data1' type='const void *' info='the second data'/>
    </functype>
    <functype name='xmlListDeallocator' file='list'>
      <info>Callback function used to free data from a list.</info>
      <return type='void'/>
      <arg name='lk' type='xmlLinkPtr' info='the data to deallocate'/>
    </functype>
    <function name='xmlListDelete' file='list'>
      <info>Deletes the list and its associated data</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListDup' file='list'>
      <info>Duplicate the list</info>
      <return type='xmlListPtr' info='a new copy of the list or NULL in case of error'/>
      <arg name='old' type='const xmlListPtr' info='the list'/>
    </function>
    <function name='xmlListEmpty' file='list'>
      <info>Is the list empty ?</info>
      <return type='int' info='1 if the list is empty, 0 otherwise'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListEnd' file='list'>
      <info>Get the last element in the list</info>
      <return type='xmlLinkPtr' info='the last element in the list, or NULL'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListFront' file='list'>
      <info>Get the first element in the list</info>
      <return type='xmlLinkPtr' info='the first element in the list, or NULL'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListInsert' file='list'>
      <info>Insert data in the ordered list at the beginning for this value</info>
      <return type='int' info='0 in case of success, 1 in case of failure'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='the data'/>
    </function>
    <function name='xmlListMerge' file='list'>
      <info>include all the elements of the second list in the first one and clear the second list</info>
      <return type='void'/>
      <arg name='l1' type='xmlListPtr' info='the original list'/>
      <arg name='l2' type='xmlListPtr' info='the new list'/>
    </function>
    <function name='xmlListPopBack' file='list'>
      <info>Removes the last element in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListPopFront' file='list'>
      <info>Removes the first element in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListPushBack' file='list'>
      <info>add the new data at the end of the list</info>
      <return type='int' info='1 if successful, 0 otherwise'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='new data'/>
    </function>
    <function name='xmlListPushFront' file='list'>
      <info>add the new data at the beginning of the list</info>
      <return type='int' info='1 if successful, 0 otherwise'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='new data'/>
    </function>
    <function name='xmlListRemoveAll' file='list'>
      <info>Remove the all instance associated to data in the list</info>
      <return type='int' info='the number of deallocation, or 0 if not found'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='list data'/>
    </function>
    <function name='xmlListRemoveFirst' file='list'>
      <info>Remove the first instance associated to data in the list</info>
      <return type='int' info='1 if a deallocation occured, or 0 if not found'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='list data'/>
    </function>
    <function name='xmlListRemoveLast' file='list'>
      <info>Remove the last instance associated to data in the list</info>
      <return type='int' info='1 if a deallocation occured, or 0 if not found'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='list data'/>
    </function>
    <function name='xmlListReverse' file='list'>
      <info>Reverse the order of the elements in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListReverseSearch' file='list'>
      <info>Search the list in reverse order for an existing value of @data</info>
      <return type='void *' info='the value associated to @data or NULL in case of error'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='a search value'/>
    </function>
    <function name='xmlListReverseWalk' file='list'>
      <info>Walk all the element of the list in reverse order and apply the walker function to it</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='walker' type='xmlListWalker' info='a processing function'/>
      <arg name='user' type='const void *' info='a user parameter passed to the walker function'/>
    </function>
    <function name='xmlListSearch' file='list'>
      <info>Search the list for an existing value of @data</info>
      <return type='void *' info='the value associated to @data or NULL in case of error'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='data' type='void *' info='a search value'/>
    </function>
    <function name='xmlListSize' file='list'>
      <info>Get the number of elements in the list</info>
      <return type='int' info='the number of elements in the list'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListSort' file='list'>
      <info>Sort all the elements in the list</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
    </function>
    <function name='xmlListWalk' file='list'>
      <info>Walk all the element of the first from first to last and apply the walker function to it</info>
      <return type='void'/>
      <arg name='l' type='xmlListPtr' info='a list'/>
      <arg name='walker' type='xmlListWalker' info='a processing function'/>
      <arg name='user' type='const void *' info='a user parameter passed to the walker function'/>
    </function>
    <functype name='xmlListWalker' file='list'>
      <info>Callback function used when walking a list with xmlListWalk().</info>
      <return type='int' info='0 to stop walking the list, 1 otherwise.'/>
      <arg name='data' type='const void *' info='the data found in the list'/>
      <arg name='user' type='const void *' info='extra user provided data to the walker'/>
    </functype>
    <function name='xmlLoadACatalog' file='catalog'>
      <info>Load the catalog and build the associated data structures. This can be either an XML Catalog or an SGML Catalog It will recurse in SGML CATALOG entries. On the other hand XML Catalogs are not handled recursively.</info>
      <return type='xmlCatalogPtr' info='the catalog parsed or NULL in case of error'/>
      <arg name='filename' type='const char *' info='a file path'/>
    </function>
    <function name='xmlLoadCatalog' file='catalog'>
      <info>Load the catalog and makes its definitions effective for the default external entity loader. It will recurse in SGML CATALOG entries. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
      <return type='int' info='0 in case of success -1 in case of error'/>
      <arg name='filename' type='const char *' info='a file path'/>
    </function>
    <function name='xmlLoadCatalogs' file='catalog'>
      <info>Load the catalogs and makes their definitions effective for the default external entity loader. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
      <return type='void'/>
      <arg name='pathss' type='const char *' info='a list of directories separated by a colon or a space.'/>
    </function>
    <function name='xmlLoadExternalEntity' file='parser'>
      <info>Load an external entity, note that the use of this function for unparsed entities may generate problems TODO: a more generic External entity API must be designed</info>
      <return type='xmlParserInputPtr' info='the xmlParserInputPtr or NULL'/>
      <arg name='URL' type='const char *' info='the URL for the entity to load'/>
      <arg name='ID' type='const char *' info='the Public ID for the entity to load'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the context in which the entity is called or NULL'/>
    </function>
    <function name='xmlLoadSGMLSuperCatalog' file='catalog'>
      <info>Load an SGML super catalog. It won&apos;t expand CATALOG or DELEGATE references. This is only needed for manipulating SGML Super Catalogs like adding and removing CATALOG or DELEGATE entries.</info>
      <return type='xmlCatalogPtr' info='the catalog parsed or NULL in case of error'/>
      <arg name='filename' type='const char *' info='a file path'/>
    </function>
    <function name='xmlLockLibrary' file='threads'>
      <info>xmlLockLibrary() is used to take out a re-entrant lock on the libxml2 library.</info>
      <return type='void'/>
    </function>
    <function name='xmlLsCountNode' file='debugXML'>
      <info>Count the children of @node.</info>
      <return type='int' info='the number of children of @node.'/>
      <arg name='node' type='xmlNodePtr' info='the node to count'/>
    </function>
    <function name='xmlLsOneNode' file='debugXML'>
      <info>Dump to @output the type and name of @node.</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='node' type='xmlNodePtr' info='the node to dump'/>
    </function>
    <functype name='xmlMallocFunc' file='xmlmemory'>
      <info>Signature for a malloc() implementation.</info>
      <return type='void *' info='a pointer to the newly allocated block or NULL in case of error.'/>
      <arg name='size' type='size_t' info='the size requested in bytes'/>
    </functype>
    <function name='xmlMallocLoc' file='xmlmemory'>
      <info>a malloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
      <arg name='file' type='const char *' info='the file name or NULL'/>
      <arg name='line' type='int' info='the line number'/>
    </function>
    <function name='xmlMemDisplay' file='xmlmemory'>
      <info>show in-extenso the memory blocks allocated</info>
      <return type='void'/>
      <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file, if NULL, the result is written to the file .memorylist'/>
    </function>
    <function name='xmlMemFree' file='xmlmemory'>
      <info>a free() equivalent, with error checking.</info>
      <return type='void'/>
      <arg name='ptr' type='void *' info='the memory block pointer'/>
    </function>
    <function name='xmlMemGet' file='xmlmemory'>
      <info>Provides the memory access functions set currently in use</info>
      <return type='int' info='0 on success'/>
      <arg name='freeFunc' type='xmlFreeFunc *' info='place to save the free() function in use'/>
      <arg name='mallocFunc' type='xmlMallocFunc *' info='place to save the malloc() function in use'/>
      <arg name='reallocFunc' type='xmlReallocFunc *' info='place to save the realloc() function in use'/>
      <arg name='strdupFunc' type='xmlStrdupFunc *' info='place to save the strdup() function in use'/>
    </function>
    <function name='xmlMemMalloc' file='xmlmemory'>
      <info>a malloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
    </function>
    <function name='xmlMemRealloc' file='xmlmemory'>
      <info>a realloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='ptr' type='void *' info='the initial memory block pointer'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
    </function>
    <function name='xmlMemSetup' file='xmlmemory'>
      <info>Override the default memory access functions with a new set This has to be called before any other libxml routines !  Should this be blocked if there was already some allocations done ?</info>
      <return type='int' info='0 on success'/>
      <arg name='freeFunc' type='xmlFreeFunc' info='the free() function to use'/>
      <arg name='mallocFunc' type='xmlMallocFunc' info='the malloc() function to use'/>
      <arg name='reallocFunc' type='xmlReallocFunc' info='the realloc() function to use'/>
      <arg name='strdupFunc' type='xmlStrdupFunc' info='the strdup() function to use'/>
    </function>
    <function name='xmlMemShow' file='xmlmemory'>
      <info>show a show display of the memory allocated, and dump the @nr last allocated areas which were not freed</info>
      <return type='void'/>
      <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file'/>
      <arg name='nr' type='int' info='number of entries to dump'/>
    </function>
    <function name='xmlMemStrdupLoc' file='xmlmemory'>
      <info>a strdup() equivalent, with logging of the allocation info.</info>
      <return type='char *' info='a pointer to the new string or NULL if allocation error occurred.'/>
      <arg name='str' type='const char *' info='the initial string pointer'/>
      <arg name='file' type='const char *' info='the file name or NULL'/>
      <arg name='line' type='int' info='the line number'/>
    </function>
    <function name='xmlMemUsed' file='xmlmemory'>
      <info>Provides the amount of memory currently allocated</info>
      <return type='int' info='an int representing the amount of memory allocated.'/>
    </function>
    <function name='xmlMemoryDump' file='xmlmemory'>
      <info>Dump in-extenso the memory blocks allocated to the file .memorylist</info>
      <return type='void'/>
    </function>
    <function name='xmlMemoryStrdup' file='xmlmemory'>
      <info>a strdup() equivalent, with logging of the allocation info.</info>
      <return type='char *' info='a pointer to the new string or NULL if allocation error occurred.'/>
      <arg name='str' type='const char *' info='the initial string pointer'/>
    </function>
    <function name='xmlMutexLock' file='threads'>
      <info>xmlMutexLock() is used to lock a libxml2 token.</info>
      <return type='void'/>
      <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
    </function>
    <function name='xmlMutexUnlock' file='threads'>
      <info>xmlMutexUnlock() is used to unlock a libxml2 token.</info>
      <return type='void'/>
      <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
    </function>
    <function name='xmlNamespaceParseNCName' file='parserInternals'>
      <info>parse an XML namespace name.  TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  [NS 3] NCName ::= (Letter | &apos;_&apos;) (NCNameChar)*  [NS 4] NCNameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | CombiningChar | Extender</info>
      <return type='xmlChar *' info='the namespace name or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlNamespaceParseNSDef' file='parserInternals'>
      <info>parse a namespace prefix declaration  TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  [NS 1] NSDef ::= PrefixDef Eq SystemLiteral  [NS 2] PrefixDef ::= &apos;xmlns&apos; (&apos;:&apos; NCName)?</info>
      <return type='xmlChar *' info='the namespace name'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlNamespaceParseQName' file='parserInternals'>
      <info>TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  parse an XML qualified name  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
      <return type='xmlChar *' info='the local part, and prefix is updated to get the Prefix if any.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
    </function>
    <function name='xmlNanoFTPCheckResponse' file='nanoftp'>
      <info>Check if there is a response from the FTP server after a command.</info>
      <return type='int' info='the code number, or 0'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPCleanup' file='nanoftp'>
      <info>Cleanup the FTP protocol layer. This cleanup proxy informations.</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoFTPClose' file='nanoftp'>
      <info>Close the connection and both control and transport</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPCloseConnection' file='nanoftp'>
      <info>Close the data connection from the server</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPConnect' file='nanoftp'>
      <info>Tries to open a control connection</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPConnectTo' file='nanoftp'>
      <info>Tries to open a control connection to the given server/port</info>
      <return type='void *' info='an fTP context or NULL if it failed'/>
      <arg name='server' type='const char *' info='an FTP server name'/>
      <arg name='port' type='int' info='the port (use 21 if 0)'/>
    </function>
    <function name='xmlNanoFTPCwd' file='nanoftp'>
      <info>Tries to change the remote directory</info>
      <return type='int' info='-1 incase of error, 1 if CWD worked, 0 if it failed'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='directory' type='char *' info='a directory on the server'/>
    </function>
    <function name='xmlNanoFTPFreeCtxt' file='nanoftp'>
      <info>Frees the context after closing the connection.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPGet' file='nanoftp'>
      <info>Fetch the given file from the server. All data are passed back in the callbacks. The last callback has a size of 0 block.</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='callback' type='ftpDataCallback' info='the user callback'/>
      <arg name='userData' type='void *' info='the user callback data'/>
      <arg name='filename' type='const char *' info='the file to retrieve'/>
    </function>
    <function name='xmlNanoFTPGetConnection' file='nanoftp'>
      <info>Try to open a data connection to the server. Currently only passive mode is supported.</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPGetResponse' file='nanoftp'>
      <info>Get the response from the FTP server after a command.</info>
      <return type='int' info='the code number'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPGetSocket' file='nanoftp'>
      <info>Initiate fetch of the given file from the server.</info>
      <return type='int' info='the socket for the data connection, or &lt;0 in case of error'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='filename' type='const char *' info='the file to retrieve (or NULL if path is in context).'/>
    </function>
    <function name='xmlNanoFTPInit' file='nanoftp'>
      <info>Initialize the FTP protocol layer. Currently it just checks for proxy informations, and get the hostname</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoFTPList' file='nanoftp'>
      <info>Do a listing on the server. All files info are passed back in the callbacks.</info>
      <return type='int' info='-1 incase of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='callback' type='ftpListCallback' info='the user callback'/>
      <arg name='userData' type='void *' info='the user callback data'/>
      <arg name='filename' type='char *' info='optional files to list'/>
    </function>
    <function name='xmlNanoFTPNewCtxt' file='nanoftp'>
      <info>Allocate and initialize a new FTP context.</info>
      <return type='void *' info='an FTP context or NULL in case of error.'/>
      <arg name='URL' type='const char *' info='The URL used to initialize the context'/>
    </function>
    <function name='xmlNanoFTPOpen' file='nanoftp'>
      <info>Start to fetch the given ftp:// resource</info>
      <return type='void *' info='an FTP context, or NULL'/>
      <arg name='URL' type='const char *' info='the URL to the resource'/>
    </function>
    <function name='xmlNanoFTPProxy' file='nanoftp'>
      <info>Setup the FTP proxy informations. This can also be done by using ftp_proxy ftp_proxy_user and ftp_proxy_password environment variables.</info>
      <return type='void'/>
      <arg name='host' type='const char *' info='the proxy host name'/>
      <arg name='port' type='int' info='the proxy port'/>
      <arg name='user' type='const char *' info='the proxy user name'/>
      <arg name='passwd' type='const char *' info='the proxy password'/>
      <arg name='type' type='int' info='the type of proxy 1 for using SITE, 2 for USER a@b'/>
    </function>
    <function name='xmlNanoFTPQuit' file='nanoftp'>
      <info>Send a QUIT command to the server</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
    </function>
    <function name='xmlNanoFTPRead' file='nanoftp'>
      <info>This function tries to read @len bytes from the existing FTP connection and saves them in @dest. This is a blocking call.</info>
      <return type='int' info='the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.'/>
      <arg name='ctx' type='void *' info='the FTP context'/>
      <arg name='dest' type='void *' info='a buffer'/>
      <arg name='len' type='int' info='the buffer length'/>
    </function>
    <function name='xmlNanoFTPScanProxy' file='nanoftp'>
      <info>(Re)Initialize the FTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like ftp://myproxy/ or ftp://myproxy:3128/ A NULL URL cleans up proxy informations.</info>
      <return type='void'/>
      <arg name='URL' type='const char *' info='The proxy URL used to initialize the proxy context'/>
    </function>
    <function name='xmlNanoFTPUpdateURL' file='nanoftp'>
      <info>Update an FTP context by parsing the URL and finding new path it indicates. If there is an error in the protocol, hostname, port or other information, the error is raised. It indicates a new connection has to be established.</info>
      <return type='int' info='0 if Ok, -1 in case of error (other host).'/>
      <arg name='ctx' type='void *' info='an FTP context'/>
      <arg name='URL' type='const char *' info='The URL used to update the context'/>
    </function>
    <function name='xmlNanoHTTPAuthHeader' file='nanohttp'>
      <info>Get the authentication header of an HTTP context</info>
      <return type='const char *' info='the stashed value of the WWW-Authenticate or Proxy-Authenticate header.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPCleanup' file='nanohttp'>
      <info>Cleanup the HTTP protocol layer.</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoHTTPClose' file='nanohttp'>
      <info>This function closes an HTTP context, it ends up the connection and free all data related to it.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPFetch' file='nanohttp'>
      <info>This function try to fetch the indicated resource via HTTP GET and save it&apos;s content in the file.</info>
      <return type='int' info='-1 in case of failure, 0 incase of success. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='filename' type='const char *' info='the filename where the content should be saved'/>
      <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
    </function>
    <function name='xmlNanoHTTPInit' file='nanohttp'>
      <info>Initialize the HTTP protocol layer. Currently it just checks for proxy informations</info>
      <return type='void'/>
    </function>
    <function name='xmlNanoHTTPMethod' file='nanohttp'>
      <info>This function try to open a connection to the indicated resource via HTTP using the given @method, adding the given extra headers and the input buffer for the request content.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='method' type='const char *' info='the HTTP method to use'/>
      <arg name='input' type='const char *' info='the input string if any'/>
      <arg name='contentType' type='char **' info='the Content-Type information IN and OUT'/>
      <arg name='headers' type='const char *' info='the extra headers'/>
      <arg name='ilen' type='int' info='input length'/>
    </function>
    <function name='xmlNanoHTTPMethodRedir' file='nanohttp'>
      <info>This function try to open a connection to the indicated resource via HTTP using the given @method, adding the given extra headers and the input buffer for the request content.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, or redir, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='method' type='const char *' info='the HTTP method to use'/>
      <arg name='input' type='const char *' info='the input string if any'/>
      <arg name='contentType' type='char **' info='the Content-Type information IN and OUT'/>
      <arg name='redir' type='char **' info='the redirected URL OUT'/>
      <arg name='headers' type='const char *' info='the extra headers'/>
      <arg name='ilen' type='int' info='input length'/>
    </function>
    <function name='xmlNanoHTTPOpen' file='nanohttp'>
      <info>This function try to open a connection to the indicated resource via HTTP GET.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
    </function>
    <function name='xmlNanoHTTPOpenRedir' file='nanohttp'>
      <info>This function try to open a connection to the indicated resource via HTTP GET.</info>
      <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
      <arg name='URL' type='const char *' info='The URL to load'/>
      <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
      <arg name='redir' type='char **' info='if available the redirected URL will be returned'/>
    </function>
    <function name='xmlNanoHTTPRead' file='nanohttp'>
      <info>This function tries to read @len bytes from the existing HTTP connection and saves them in @dest. This is a blocking call.</info>
      <return type='int' info='the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
      <arg name='dest' type='void *' info='a buffer'/>
      <arg name='len' type='int' info='the buffer length'/>
    </function>
    <function name='xmlNanoHTTPReturnCode' file='nanohttp'>
      <info>Get the latest HTTP return code received</info>
      <return type='int' info='the HTTP return code for the request.'/>
      <arg name='ctx' type='void *' info='the HTTP context'/>
    </function>
    <function name='xmlNanoHTTPSave' file='nanohttp'>
      <info>This function saves the output of the HTTP transaction to a file It closes and free the context at the end</info>
      <return type='int' info='-1 in case of failure, 0 incase of success.'/>
      <arg name='ctxt' type='void *' info='the HTTP context'/>
      <arg name='filename' type='const char *' info='the filename where the content should be saved'/>
    </function>
    <function name='xmlNanoHTTPScanProxy' file='nanohttp'>
      <info>(Re)Initialize the HTTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like http://myproxy/ or http://myproxy:3128/ A NULL URL cleans up proxy informations.</info>
      <return type='void'/>
      <arg name='URL' type='const char *' info='The proxy URL used to initialize the proxy context'/>
    </function>
    <function name='xmlNewAutomata' file='xmlautomata'>
      <info>Create a new automata</info>
      <return type='xmlAutomataPtr' info='the new object or NULL in case of failure'/>
    </function>
    <function name='xmlNewCDataBlock' file='tree'>
      <info>Creation of a new node containing a CDATA block.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the CDATA block content content'/>
      <arg name='len' type='int' info='the length of the block'/>
    </function>
    <function name='xmlNewCatalog' file='catalog'>
      <info>create a new Catalog.</info>
      <return type='xmlCatalogPtr' info='the xmlCatalogPtr or NULL in case of error'/>
      <arg name='sgml' type='int' info='should this create an SGML catalog'/>
    </function>
    <function name='xmlNewCharEncodingHandler' file='encoding'>
      <info>Create and registers an xmlCharEncodingHandler.</info>
      <return type='xmlCharEncodingHandlerPtr' info='the xmlCharEncodingHandlerPtr created (or NULL in case of error).'/>
      <arg name='name' type='const char *' info='the encoding name, in UTF-8 format (ASCII actually)'/>
      <arg name='input' type='xmlCharEncodingInputFunc' info='the xmlCharEncodingInputFunc to read that encoding'/>
      <arg name='output' type='xmlCharEncodingOutputFunc' info='the xmlCharEncodingOutputFunc to write that encoding'/>
    </function>
    <function name='xmlNewCharRef' file='tree'>
      <info>Creation of a new character reference node.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the char ref string, starting with # or &quot;&amp;# ... ;&quot;'/>
    </function>
    <function name='xmlNewChild' file='tree'>
      <info>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If content is non NULL, a child list containing the TEXTs and ENTITY_REFs node will be created. NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewTextChild() if entities support is not needed.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
      <arg name='ns' type='xmlNsPtr' info='a namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the name of the child'/>
      <arg name='content' type='const xmlChar *' info='the XML content of the child if any.'/>
    </function>
    <function name='xmlNewComment' file='tree'>
      <info>Creation of a new node containing a comment.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='content' type='const xmlChar *' info='the comment content'/>
    </function>
    <function name='xmlNewDoc' file='tree'>
      <info>Creates a new XML document</info>
      <return type='xmlDocPtr' info='a new document'/>
      <arg name='version' type='const xmlChar *' info='xmlChar string giving the version of XML &quot;1.0&quot;'/>
    </function>
    <function name='xmlNewDocComment' file='tree'>
      <info>Creation of a new node containing a comment within a document.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the comment content'/>
    </function>
    <function name='xmlNewDocFragment' file='tree'>
      <info>Creation of a new Fragment node.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document owning the fragment'/>
    </function>
    <function name='xmlNewDocNode' file='tree'>
      <info>Creation of a new node element within a document. @ns and @content are optional (NULL). NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you don&apos;t need entities support.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the node name'/>
      <arg name='content' type='const xmlChar *' info='the XML text content if any'/>
    </function>
    <function name='xmlNewDocNodeEatName' file='tree'>
      <info>Creation of a new node element within a document. @ns and @content are optional (NULL). NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you don&apos;t need entities support.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='xmlChar *' info='the node name'/>
      <arg name='content' type='const xmlChar *' info='the XML text content if any'/>
    </function>
    <function name='xmlNewDocProp' file='tree'>
      <info>Create a new property carried by a document.</info>
      <return type='xmlAttrPtr' info='a pointer to the attribute'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlNewDocRawNode' file='tree'>
      <info>Creation of a new node element within a document. @ns and @content are optional (NULL).</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the node name'/>
      <arg name='content' type='const xmlChar *' info='the text content if any'/>
    </function>
    <function name='xmlNewDocText' file='tree'>
      <info>Creation of a new text node within a document.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the text content'/>
    </function>
    <function name='xmlNewDocTextLen' file='tree'>
      <info>Creation of a new text node with an extra content length parameter. The text node pertain to a given document.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='content' type='const xmlChar *' info='the text content'/>
      <arg name='len' type='int' info='the text len.'/>
    </function>
    <function name='xmlNewDtd' file='tree'>
      <info>Creation of a new DTD for the external subset. To create an internal subset, use xmlCreateIntSubset().</info>
      <return type='xmlDtdPtr' info='a pointer to the new DTD structure'/>
      <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
      <arg name='name' type='const xmlChar *' info='the DTD name'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
      <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
    </function>
    <function name='xmlNewElementContent' file='valid'>
      <info>Allocate an element content structure.</info>
      <return type='xmlElementContentPtr' info='NULL if not, otherwise the new element content structure'/>
      <arg name='name' type='xmlChar *' info='the subelement name or NULL'/>
      <arg name='type' type='xmlElementContentType' info='the type of element content decl'/>
    </function>
    <function name='xmlNewEntityInputStream' file='parserInternals'>
      <info>Create a new input stream based on an xmlEntityPtr</info>
      <return type='xmlParserInputPtr' info='the new input stream or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='entity' type='xmlEntityPtr' info='an Entity pointer'/>
    </function>
    <function name='xmlNewGlobalNs' file='tree'>
      <info>Creation of a Namespace, the old way using PI and without scoping DEPRECATED !!! It now create a namespace on the root element of the document if found.</info>
      <return type='xmlNsPtr' info='NULL this functionality had been removed'/>
      <arg name='doc' type='xmlDocPtr' info='the document carrying the namespace'/>
      <arg name='href' type='const xmlChar *' info='the URI associated'/>
      <arg name='prefix' type='const xmlChar *' info='the prefix for the namespace'/>
    </function>
    <function name='xmlNewIOInputStream' file='parser'>
      <info>Create a new input stream structure encapsulating the @input into a stream suitable for the parser.</info>
      <return type='xmlParserInputPtr' info='the new input stream or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='input' type='xmlParserInputBufferPtr' info='an I/O Input'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlNewInputFromFile' file='parserInternals'>
      <info>Create a new input stream based on a file.</info>
      <return type='xmlParserInputPtr' info='the new input stream or NULL in case of error'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='filename' type='const char *' info='the filename to use as entity'/>
    </function>
    <function name='xmlNewInputStream' file='parserInternals'>
      <info>Create a new input stream structure</info>
      <return type='xmlParserInputPtr' info='the new input stream or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlNewMutex' file='threads'>
      <info>xmlNewMutex() is used to allocate a libxml2 token struct for use in synchronizing access to data.</info>
      <return type='xmlMutexPtr' info='a new simple mutex pointer or NULL in case of error'/>
    </function>
    <function name='xmlNewNode' file='tree'>
      <info>Creation of a new node element. @ns is optional (NULL).</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the node name'/>
    </function>
    <function name='xmlNewNodeEatName' file='tree'>
      <info>Creation of a new node element. @ns is optional (NULL).</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
      <arg name='name' type='xmlChar *' info='the node name'/>
    </function>
    <function name='xmlNewNs' file='tree'>
      <info>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. We use href==NULL in the case of an element creation where the namespace was not defined.</info>
      <return type='xmlNsPtr' info='a new namespace pointer or NULL'/>
      <arg name='node' type='xmlNodePtr' info='the element carrying the namespace'/>
      <arg name='href' type='const xmlChar *' info='the URI associated'/>
      <arg name='prefix' type='const xmlChar *' info='the prefix for the namespace'/>
    </function>
    <function name='xmlNewNsProp' file='tree'>
      <info>Create a new property tagged with a namespace and carried by a node.</info>
      <return type='xmlAttrPtr' info='a pointer to the attribute'/>
      <arg name='node' type='xmlNodePtr' info='the holding node'/>
      <arg name='ns' type='xmlNsPtr' info='the namespace'/>
      <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlNewNsPropEatName' file='tree'>
      <info>Create a new property tagged with a namespace and carried by a node.</info>
      <return type='xmlAttrPtr' info='a pointer to the attribute'/>
      <arg name='node' type='xmlNodePtr' info='the holding node'/>
      <arg name='ns' type='xmlNsPtr' info='the namespace'/>
      <arg name='name' type='xmlChar *' info='the name of the attribute'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlNewPI' file='tree'>
      <info>Creation of a processing instruction element.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='name' type='const xmlChar *' info='the processing instruction name'/>
      <arg name='content' type='const xmlChar *' info='the PI content'/>
    </function>
    <function name='xmlNewParserCtxt' file='parserInternals'>
      <info>Allocate and initialize a new parser context.</info>
      <return type='xmlParserCtxtPtr' info='the xmlParserCtxtPtr or NULL'/>
    </function>
    <function name='xmlNewProp' file='tree'>
      <info>Create a new property carried by a node.</info>
      <return type='xmlAttrPtr' info='a pointer to the attribute'/>
      <arg name='node' type='xmlNodePtr' info='the holding node'/>
      <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlNewRMutex' file='threads'>
      <info>xmlRNewMutex() is used to allocate a reentrant mutex for use in synchronizing access to data. token_r is a re-entrant lock and thus useful for synchronizing access to data structures that may be manipulated in a recursive fashion.</info>
      <return type='xmlRMutexPtr' info='the new reentrant mutex pointer or NULL in case of error'/>
    </function>
    <function name='xmlNewReference' file='tree'>
      <info>Creation of a new reference node.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='name' type='const xmlChar *' info='the reference name, or the reference string with &amp; and ;'/>
    </function>
    <function name='xmlNewStringInputStream' file='parserInternals'>
      <info>Create a new input stream based on a memory buffer.</info>
      <return type='xmlParserInputPtr' info='the new input stream'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='buffer' type='const xmlChar *' info='an memory buffer'/>
    </function>
    <function name='xmlNewText' file='tree'>
      <info>Creation of a new text node.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='content' type='const xmlChar *' info='the text content'/>
    </function>
    <function name='xmlNewTextChild' file='tree'>
      <info>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If content is non NULL, a child TEXT node will be created containing the string content.</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
      <arg name='ns' type='xmlNsPtr' info='a namespace if any'/>
      <arg name='name' type='const xmlChar *' info='the name of the child'/>
      <arg name='content' type='const xmlChar *' info='the text content of the child if any.'/>
    </function>
    <function name='xmlNewTextLen' file='tree'>
      <info>Creation of a new text node with an extra parameter for the content&apos;s length</info>
      <return type='xmlNodePtr' info='a pointer to the new node object.'/>
      <arg name='content' type='const xmlChar *' info='the text content'/>
      <arg name='len' type='int' info='the text len.'/>
    </function>
    <function name='xmlNewTextReader' file='xmlreader'>
      <info>Create an xmlTextReader structure fed with @input</info>
      <return type='xmlTextReaderPtr' info='the new xmlTextReaderPtr or NULL in case of error'/>
      <arg name='input' type='xmlParserInputBufferPtr' info='the xmlParserInputBufferPtr used to read data'/>
      <arg name='URI' type='const char *' info='the URI information for the source if available'/>
    </function>
    <function name='xmlNewTextReaderFilename' file='xmlreader'>
      <info>Create an xmlTextReader structure fed with the resource at @URI</info>
      <return type='xmlTextReaderPtr' info='the new xmlTextReaderPtr or NULL in case of error'/>
      <arg name='URI' type='const char *' info='the URI of the resource to process'/>
    </function>
    <function name='xmlNextChar' file='parserInternals'>
      <info>Skip to the next char input char.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
    </function>
    <function name='xmlNoNetExternalEntityLoader' file='xmlIO'>
      <info>A specific entity loader disabling network accesses, though still allowing local catalog accesses for resolution.</info>
      <return type='xmlParserInputPtr' info='a new allocated xmlParserInputPtr, or NULL.'/>
      <arg name='URL' type='const char *' info='the URL for the entity to load'/>
      <arg name='ID' type='const char *' info='the System ID for the entity to load'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the context in which the entity is called or NULL'/>
    </function>
    <function name='xmlNodeAddContent' file='tree'>
      <info>Append the extra substring to the node content.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
      <arg name='content' type='const xmlChar *' info='extra content'/>
    </function>
    <function name='xmlNodeAddContentLen' file='tree'>
      <info>Append the extra substring to the node content.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
      <arg name='content' type='const xmlChar *' info='extra content'/>
      <arg name='len' type='int' info='the size of @content'/>
    </function>
    <function name='xmlNodeDump' file='tree'>
      <info>Dump an XML node, recursive behaviour,children are printed too. Note that format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
      <return type='int' info='the number of bytes written to the buffer or -1 in case of error'/>
      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
      <arg name='level' type='int' info='the imbrication level for indenting'/>
      <arg name='format' type='int' info='is formatting allowed'/>
    </function>
    <function name='xmlNodeDumpOutput' file='tree'>
      <info>Dump an XML node, recursive behaviour, children are printed too. Note that format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
      <return type='void'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='the XML buffer output'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='cur' type='xmlNodePtr' info='the current node'/>
      <arg name='level' type='int' info='the imbrication level for indenting'/>
      <arg name='format' type='int' info='is formatting allowed'/>
      <arg name='encoding' type='const char *' info='an optional encoding string'/>
    </function>
    <function name='xmlNodeGetBase' file='tree'>
      <info>Searches for the BASE URL. The code should work on both XML and HTML document even if base mechanisms are completely different. It returns the base as defined in RFC 2396 sections 5.1.1. Base URI within Document Content and 5.1.2. Base URI from the Encapsulating Entity However it does not return the document base (5.1.3), use xmlDocumentGetBase() for this</info>
      <return type='xmlChar *' info='a pointer to the base URL, or NULL if not found It&apos;s up to the caller to free the memory with xmlFree().'/>
      <arg name='doc' type='xmlDocPtr' info='the document the node pertains to'/>
      <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
    </function>
    <function name='xmlNodeGetContent' file='tree'>
      <info>Read the value of a node, this can be either the text carried directly by this node if it&apos;s a TEXT node or the aggregate string of the values carried by this node child&apos;s (TEXT and ENTITY_REF). Entity references are substituted.</info>
      <return type='xmlChar *' info='a new #xmlChar * or NULL if no content is available. It&apos;s up to the caller to free the memory with xmlFree().'/>
      <arg name='cur' type='xmlNodePtr' info='the node being read'/>
    </function>
    <function name='xmlNodeGetLang' file='tree'>
      <info>Searches the language of a node, i.e. the values of the xml:lang attribute or the one carried by the nearest ancestor.</info>
      <return type='xmlChar *' info='a pointer to the lang value, or NULL if not found It&apos;s up to the caller to free the memory with xmlFree().'/>
      <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
    </function>
    <function name='xmlNodeGetSpacePreserve' file='tree'>
      <info>Searches the space preserving behaviour of a node, i.e. the values of the xml:space attribute or the one carried by the nearest ancestor.</info>
      <return type='int' info='-1 if xml:space is not inherited, 0 if &quot;default&quot;, 1 if &quot;preserve&quot;'/>
      <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
    </function>
    <function name='xmlNodeIsText' file='tree'>
      <info>Is this node a Text node ?</info>
      <return type='int' info='1 yes, 0 no'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlNodeListGetRawString' file='tree'>
      <info>Builds the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs, contrary to xmlNodeListGetString() this function doesn&apos;t do any character encoding handling.</info>
      <return type='xmlChar *' info='a pointer to the string copy, the caller must free it with xmlFree().'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='list' type='xmlNodePtr' info='a Node list'/>
      <arg name='inLine' type='int' info='should we replace entity contents or show their external form'/>
    </function>
    <function name='xmlNodeListGetString' file='tree'>
      <info>Build the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs</info>
      <return type='xmlChar *' info='a pointer to the string copy, the caller must free it with xmlFree().'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='list' type='xmlNodePtr' info='a Node list'/>
      <arg name='inLine' type='int' info='should we replace entity contents or show their external form'/>
    </function>
    <function name='xmlNodeSetBase' file='tree'>
      <info>Set (or reset) the base URI of a node, i.e. the value of the xml:base attribute.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
      <arg name='uri' type='xmlChar *' info='the new base URI'/>
    </function>
    <function name='xmlNodeSetContent' file='tree'>
      <info>Replace the content of a node.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
      <arg name='content' type='const xmlChar *' info='the new value of the content'/>
    </function>
    <function name='xmlNodeSetContentLen' file='tree'>
      <info>Replace the content of a node.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
      <arg name='content' type='const xmlChar *' info='the new value of the content'/>
      <arg name='len' type='int' info='the size of @content'/>
    </function>
    <function name='xmlNodeSetLang' file='tree'>
      <info>Set the language of a node, i.e. the values of the xml:lang attribute.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
      <arg name='lang' type='const xmlChar *' info='the language description'/>
    </function>
    <function name='xmlNodeSetName' file='tree'>
      <info>Set (or reset) the name of a node.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
      <arg name='name' type='const xmlChar *' info='the new tag name'/>
    </function>
    <function name='xmlNodeSetSpacePreserve' file='tree'>
      <info>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
      <arg name='val' type='int' info='the xml:space value (&quot;0&quot;: default, 1: &quot;preserve&quot;)'/>
    </function>
    <function name='xmlNormalizeURIPath' file='uri'>
      <info>Applies the 5 normalization steps to a path string--that is, RFC 2396 Section 5.2, steps 6.c through 6.g.  Normalization occurs directly on the string, no new allocation is done</info>
      <return type='int' info='0 or an error code'/>
      <arg name='path' type='char *' info='pointer to the path string'/>
    </function>
    <function name='xmlNormalizeWindowsPath' file='xmlIO'>
      <info>Normalize a Windows path to make an URL from it</info>
      <return type='xmlChar *' info='a new URI which must be freed by the caller or NULL in case of error'/>
      <arg name='path' type='const xmlChar *' info='a windows path like &quot;C:/foo/bar&quot;'/>
    </function>
    <function name='xmlOutputBufferClose' file='xmlIO'>
      <info>flushes and close the output I/O channel and free up all the associated resources</info>
      <return type='int' info='the number of byte written or -1 in case of error.'/>
      <arg name='out' type='xmlOutputBufferPtr' info='a buffered output'/>
    </function>
    <function name='xmlOutputBufferCreateFd' file='xmlIO'>
      <info>Create a buffered output for the progressive saving to a file descriptor</info>
      <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
      <arg name='fd' type='int' info='a file descriptor number'/>
      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
    </function>
    <function name='xmlOutputBufferCreateFile' file='xmlIO'>
      <info>Create a buffered output for the progressive saving to a FILE * buffered C I/O</info>
      <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
      <arg name='file' type='FILE *' info='a FILE*'/>
      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
    </function>
    <function name='xmlOutputBufferCreateFilename' file='xmlIO'>
      <info>Create a buffered  output for the progressive saving of a file If filename is &quot;-&apos; then we use stdout as the output. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. TODO: currently if compression is set, the library only support writing to a local file.</info>
      <return type='xmlOutputBufferPtr' info='the new output or NULL'/>
      <arg name='URI' type='const char *' info='a C string containing the URI or filename'/>
      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
      <arg name='compression' type='int' info='the compression ration (0 none, 9 max).'/>
    </function>
    <function name='xmlOutputBufferCreateIO' file='xmlIO'>
      <info>Create a buffered output for the progressive saving to an I/O handler</info>
      <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
      <arg name='iowrite' type='xmlOutputWriteCallback' info='an I/O write function'/>
      <arg name='ioclose' type='xmlOutputCloseCallback' info='an I/O close function'/>
      <arg name='ioctx' type='void *' info='an I/O handler'/>
      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the charset encoding if known'/>
    </function>
    <function name='xmlOutputBufferFlush' file='xmlIO'>
      <info>flushes the output I/O channel</info>
      <return type='int' info='the number of byte written or -1 in case of error.'/>
      <arg name='out' type='xmlOutputBufferPtr' info='a buffered output'/>
    </function>
    <function name='xmlOutputBufferWrite' file='xmlIO'>
      <info>Write the content of the array in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
      <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
      <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
      <arg name='len' type='int' info='the size in bytes of the array.'/>
      <arg name='buf' type='const char *' info='an char array'/>
    </function>
    <function name='xmlOutputBufferWriteString' file='xmlIO'>
      <info>Write the content of the string in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
      <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
      <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
      <arg name='str' type='const char *' info='a zero terminated C string'/>
    </function>
    <functype name='xmlOutputCloseCallback' file='xmlIO'>
      <info>Callback used in the I/O Output API to close the resource</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='context' type='void *' info='an Output context'/>
    </functype>
    <functype name='xmlOutputMatchCallback' file='xmlIO'>
      <info>Callback used in the I/O Output API to detect if the current handler can provide output fonctionnalities for this resource.</info>
      <return type='int' info='1 if yes and 0 if another Output module should be used'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlOutputOpenCallback' file='xmlIO'>
      <info>Callback used in the I/O Output API to open the resource</info>
      <return type='void *' info='an Output context or NULL in case or error'/>
      <arg name='filename' type='char const *' info='the filename or URI'/>
    </functype>
    <functype name='xmlOutputWriteCallback' file='xmlIO'>
      <info>Callback used in the I/O Output API to write to the resource</info>
      <return type='int' info='the number of bytes written or -1 in case of error'/>
      <arg name='context' type='void *' info='an Output context'/>
      <arg name='buffer' type='const char *' info='the buffer of data to write'/>
      <arg name='len' type='int' info='the length of the buffer in bytes'/>
    </functype>
    <function name='xmlParseAttValue' file='parserInternals'>
      <info>parse a value for an attribute Note: the parser won&apos;t do substitution of entities here, this will be handled later in xmlStringGetNodeList  [10] AttValue ::= &apos;&quot;&apos; ([^&lt;&amp;&quot;] | Reference)* &apos;&quot;&apos; | &quot;&apos;&quot; ([^&lt;&amp;&apos;] | Reference)* &quot;&apos;&quot;  3.3.3 Attribute-Value Normalization: Before the value of an attribute is passed to the application or checked for validity, the XML processor must normalize it as follows: - a character reference is processed by appending the referenced character to the attribute value - an entity reference is processed by recursively processing the replacement text of the entity - a whitespace character (#x20, #xD, #xA, #x9) is processed by appending #x20 to the normalized value, except that only a single #x20 is appended for a &quot;#xD#xA&quot; sequence that is part of an external parsed entity or the literal entity value of an internal parsed entity - other characters are processed by appending them to the normalized value If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by a single space (#x20) character. All attributes for which no declaration has been read should be treated by a non-validating parser as if declared CDATA.</info>
      <return type='xmlChar *' info='the AttValue parsed or NULL. The value has to be freed by the caller.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseAttribute' file='parserInternals'>
      <info>parse an attribute  [41] Attribute ::= Name Eq AttValue  [ WFC: No External Entity References ] Attribute values cannot contain direct or indirect entity references to external entities.  [ WFC: No &lt; in Attribute Values ] The replacement text of any entity referred to directly or indirectly in an attribute value (other than &quot;&amp;lt;&quot;) must not contain a &lt;.  [ VC: Attribute Value Type ] The attribute must have been declared; the value must be of the type declared for it.  [25] Eq ::= S? &apos;=&apos; S?  With namespace:  [NS 11] Attribute ::= QName Eq AttValue  Also the case QName == xmlns:??? is handled independently as a namespace definition.</info>
      <return type='xmlChar *' info='the attribute name, and the value in *value.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlChar **' info='a xmlChar ** used to store the value of the attribute'/>
    </function>
    <function name='xmlParseAttributeListDecl' file='parserInternals'>
      <info>: parse the Attribute list def for an element  [52] AttlistDecl ::= &apos;&lt;!ATTLIST&apos; S Name AttDef* S? &apos;&gt;&apos;  [53] AttDef ::= S Name S AttType S DefaultDecl</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseAttributeType' file='parserInternals'>
      <info>parse the Attribute list def for an element  [54] AttType ::= StringType | TokenizedType | EnumeratedType  [55] StringType ::= &apos;CDATA&apos;  [56] TokenizedType ::= &apos;ID&apos; | &apos;IDREF&apos; | &apos;IDREFS&apos; | &apos;ENTITY&apos; | &apos;ENTITIES&apos; | &apos;NMTOKEN&apos; | &apos;NMTOKENS&apos;  Validity constraints for attribute values syntax are checked in xmlValidateAttributeValue()  [ VC: ID ] Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.  [ VC: One ID per Element Type ] No element type may have more than one ID attribute specified.  [ VC: ID Attribute Default ] An ID attribute must have a declared default of #IMPLIED or #REQUIRED.  [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names; each IDREF Name must match the value of an ID attribute on some element in the XML document; i.e. IDREF values must match the value of some ID attribute.  [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names; each Entity Name must match the name of an unparsed entity declared in the DTD.  [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</info>
      <return type='int' info='the attribute type'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='tree' type='xmlEnumerationPtr *' info='the enumeration tree built while parsing'/>
    </function>
    <function name='xmlParseBalancedChunkMemory' file='parser'>
      <info>Parse a well-balanced chunk of an XML document called by the parser The allowed sequence for the Well Balanced Chunk is the one defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
      <return type='int' info='0 if the chunk is well balanced, -1 in case of args problem and the parser error code otherwise'/>
      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler bloc (possibly NULL)'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
      <arg name='string' type='const xmlChar *' info='the input string in UTF8 or ISO-Latin (zero terminated)'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
    </function>
    <function name='xmlParseBalancedChunkMemoryRecover' file='parser'>
      <info>Parse a well-balanced chunk of an XML document called by the parser The allowed sequence for the Well Balanced Chunk is the one defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
      <return type='int' info='0 if the chunk is well balanced, -1 in case of args problem and the parser error code otherwise  In case recover is set to 1, the nodelist will not be empty even if the parsed chunk is not well balanced.'/>
      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler bloc (possibly NULL)'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
      <arg name='string' type='const xmlChar *' info='the input string in UTF8 or ISO-Latin (zero terminated)'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
      <arg name='recover' type='int' info='return nodes even if the data is broken (use 0)'/>
    </function>
    <function name='xmlParseCDSect' file='parserInternals'>
      <info>Parse escaped pure raw content.  [18] CDSect ::= CDStart CData CDEnd  [19] CDStart ::= &apos;&lt;![CDATA[&apos;  [20] Data ::= (Char* - (Char* &apos;]]&gt;&apos; Char*))  [21] CDEnd ::= &apos;]]&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseCatalogFile' file='catalog'>
      <info>parse an XML file and build a tree. It&apos;s like xmlParseFile() except it bypass all catalog lookups.</info>
      <return type='xmlDocPtr' info='the resulting document tree or NULL in case of error'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlParseCharData' file='parserInternals'>
      <info>parse a CharData section. if we are within a CDATA section &apos;]]&gt;&apos; marks an end of section.  The right angle bracket (&gt;) may be represented using the string &quot;&amp;gt;&quot;, and must, for compatibility, be escaped using &quot;&amp;gt;&quot; or a character reference when it appears in the string &quot;]]&gt;&quot; in content, when that string is not marking the end of a CDATA section.  [14] CharData ::= [^&lt;&amp;]* - ([^&lt;&amp;]* &apos;]]&gt;&apos; [^&lt;&amp;]*)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='cdata' type='int' info='int indicating whether we are within a CDATA section'/>
    </function>
    <function name='xmlParseCharEncoding' file='encoding'>
      <info>Compare the string to the known encoding schemes already known. Note that the comparison is case insensitive accordingly to the section [XML] 4.3.3 Character Encoding in Entities.</info>
      <return type='xmlCharEncoding' info='one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE if not recognized.'/>
      <arg name='name' type='const char *' info='the encoding name as parsed, in UTF-8 format (ASCII actually)'/>
    </function>
    <function name='xmlParseCharRef' file='parserInternals'>
      <info>parse Reference declarations  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;  [ WFC: Legal Character ] Characters referred to using character references must match the production for Char.</info>
      <return type='int' info='the value parsed (as an int), 0 in case of error'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseChunk' file='parser'>
      <info>Parse a Chunk of memory</info>
      <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='chunk' type='const char *' info='an char array'/>
      <arg name='size' type='int' info='the size in byte of the chunk'/>
      <arg name='terminate' type='int' info='last chunk indicator'/>
    </function>
    <function name='xmlParseComment' file='parserInternals'>
      <info>Skip an XML (SGML) comment &lt;!-- .... --&gt; The spec says that &quot;For compatibility, the string &quot;--&quot; (double-hyphen) must not occur within comments. &quot;  [15] Comment ::= &apos;&lt;!--&apos; ((Char - &apos;-&apos;) | (&apos;-&apos; (Char - &apos;-&apos;)))* &apos;--&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseContent' file='parserInternals'>
      <info>Parse a content:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseCtxtExternalEntity' file='parser'>
      <info>Parse an external general entity within an existing parsing context An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
      <return type='int' info='0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise'/>
      <arg name='ctx' type='xmlParserCtxtPtr' info='the existing parsing context'/>
      <arg name='URL' type='const xmlChar *' info='the URL for the entity to load'/>
      <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
    </function>
    <function name='xmlParseDTD' file='parser'>
      <info>Load and parse an external subset.</info>
      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error.'/>
      <arg name='ExternalID' type='const xmlChar *' info='a NAME* containing the External ID of the DTD'/>
      <arg name='SystemID' type='const xmlChar *' info='a NAME* containing the URL to the DTD'/>
    </function>
    <function name='xmlParseDefaultDecl' file='parserInternals'>
      <info>Parse an attribute default declaration  [60] DefaultDecl ::= &apos;#REQUIRED&apos; | &apos;#IMPLIED&apos; | ((&apos;#FIXED&apos; S)? AttValue)  [ VC: Required Attribute ] if the default declaration is the keyword #REQUIRED, then the attribute must be specified for all elements of the type in the attribute-list declaration.  [ VC: Attribute Default Legal ] The declared default value must meet the lexical constraints of the declared attribute type c.f. xmlValidateAttributeDecl()  [ VC: Fixed Attribute Default ] if an attribute has a default value declared with the #FIXED keyword, instances of that attribute must match the default value.  [ WFC: No &lt; in Attribute Values ] handled in xmlParseAttValue()</info>
      <return type='int' info='XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED or XML_ATTRIBUTE_FIXED.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='value' type='xmlChar **' info='Receive a possible fixed default value for the attribute'/>
    </function>
    <function name='xmlParseDoc' file='parser'>
      <info>parse an XML in-memory document and build a tree.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
    </function>
    <function name='xmlParseDocTypeDecl' file='parserInternals'>
      <info>parse a DOCTYPE declaration  [28] doctypedecl ::= &apos;&lt;!DOCTYPE&apos; S Name (S ExternalID)? S? (&apos;[&apos; (markupdecl | PEReference | S)* &apos;]&apos; S?)? &apos;&gt;&apos;  [ VC: Root Element Type ] The Name in the document type declaration must match the element type of the root element.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseDocument' file='parser'>
      <info>parse an XML document (and build a tree if using the standard SAX interface).  [1] document ::= prolog element Misc*  [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?</info>
      <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseElement' file='parserInternals'>
      <info>parse an XML element, this is highly recursive  [39] element ::= EmptyElemTag | STag content ETag  [ WFC: Element Type Match ] The Name in an element&apos;s end-tag must match the element type in the start-tag.  [ VC: Element Valid ] An element is valid if there is a declaration matching elementdecl where the Name matches the element type and one of the following holds: - The declaration matches EMPTY and the element has no content. - The declaration matches children and the sequence of child elements belongs to the language generated by the regular expression in the content model, with optional white space (characters matching the nonterminal S) between each pair of child elements. - The declaration matches Mixed and the content consists of character data and child elements whose types match names in the content model. - The declaration matches ANY, and the types of any child elements have been declared.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseElementChildrenContentDecl' file='parserInternals'>
      <info>parse the declaration for a Mixed Element content The leading &apos;(&apos; and spaces have been skipped in xmlParseElementContentDecl   [47] children ::= (choice | seq) (&apos;?&apos; | &apos;*&apos; | &apos;+&apos;)?  [48] cp ::= (Name | choice | seq) (&apos;?&apos; | &apos;*&apos; | &apos;+&apos;)?  [49] choice ::= &apos;(&apos; S? cp ( S? &apos;|&apos; S? cp )* S? &apos;)&apos;  [50] seq ::= &apos;(&apos; S? cp ( S? &apos;,&apos; S? cp )* S? &apos;)&apos;  [ VC: Proper Group/PE Nesting ] applies to [49] and [50] TODO Parameter-entity replacement text must be properly nested with parenthesized groups. That is to say, if either of the opening or closing parentheses in a choice, seq, or Mixed construct is contained in the replacement text for a parameter entity, both must be contained in the same replacement text. For interoperability, if a parameter-entity reference appears in a choice, seq, or Mixed construct, its replacement text should not be empty, and neither the first nor last non-blank character of the replacement text should be a connector (| or ,).</info>
      <return type='xmlElementContentPtr' info='the tree of xmlElementContentPtr describing the element hierarchy.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='inputchk' type='xmlParserInputPtr' info='the input used for the current entity, needed for boundary checks'/>
    </function>
    <function name='xmlParseElementContentDecl' file='parserInternals'>
      <info>parse the declaration for an Element content either Mixed or Children, the cases EMPTY and ANY are handled directly in xmlParseElementDecl  [46] contentspec ::= &apos;EMPTY&apos; | &apos;ANY&apos; | Mixed | children</info>
      <return type='int' info='the type of element content XML_ELEMENT_TYPE_xxx'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='name' type='xmlChar *' info='the name of the element being defined.'/>
      <arg name='result' type='xmlElementContentPtr *' info='the Element Content pointer will be stored here if any'/>
    </function>
    <function name='xmlParseElementDecl' file='parserInternals'>
      <info>parse an Element declaration.  [45] elementdecl ::= &apos;&lt;!ELEMENT&apos; S Name S contentspec S? &apos;&gt;&apos;  [ VC: Unique Element Type Declaration ] No element type may be declared more than once</info>
      <return type='int' info='the type of the element, or -1 in case of error'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseElementMixedContentDecl' file='parserInternals'>
      <info>parse the declaration for a Mixed Element content The leading &apos;(&apos; and spaces have been skipped in xmlParseElementContentDecl  [51] Mixed ::= &apos;(&apos; S? &apos;#PCDATA&apos; (S? &apos;|&apos; S? Name)* S? &apos;)*&apos; | &apos;(&apos; S? &apos;#PCDATA&apos; S? &apos;)&apos;  [ VC: Proper Group/PE Nesting ] applies to [51] too (see [49])  [ VC: No Duplicate Types ] The same name must not appear more than once in a single mixed-content declaration.</info>
      <return type='xmlElementContentPtr' info='the list of the xmlElementContentPtr describing the element choices'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='inputchk' type='xmlParserInputPtr' info='the input used for the current entity, needed for boundary checks'/>
    </function>
    <function name='xmlParseEncName' file='parserInternals'>
      <info>parse the XML encoding name  [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | &apos;-&apos;)*</info>
      <return type='xmlChar *' info='the encoding name value or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEncodingDecl' file='parserInternals'>
      <info>parse the XML encoding declaration  [80] EncodingDecl ::= S &apos;encoding&apos; Eq (&apos;&quot;&apos; EncName &apos;&quot;&apos; |  &quot;&apos;&quot; EncName &quot;&apos;&quot;)  this setups the conversion filters.</info>
      <return type='xmlChar *' info='the encoding value or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEndTag' file='parserInternals'>
      <info>parse an end of tag  [42] ETag ::= &apos;&lt;/&apos; Name S? &apos;&gt;&apos;  With namespace  [NS 9] ETag ::= &apos;&lt;/&apos; QName S? &apos;&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEntity' file='parser'>
      <info>parse an XML external entity out of context and build a tree.  [78] extParsedEnt ::= TextDecl? content  This correspond to a &quot;Well Balanced&quot; chunk</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlParseEntityDecl' file='parserInternals'>
      <info>parse &lt;!ENTITY declarations  [70] EntityDecl ::= GEDecl | PEDecl  [71] GEDecl ::= &apos;&lt;!ENTITY&apos; S Name S EntityDef S? &apos;&gt;&apos;  [72] PEDecl ::= &apos;&lt;!ENTITY&apos; S &apos;%&apos; S Name S PEDef S? &apos;&gt;&apos;  [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)  [74] PEDef ::= EntityValue | ExternalID  [76] NDataDecl ::= S &apos;NDATA&apos; S Name  [ VC: Notation Declared ] The Name must match the declared name of a notation.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEntityRef' file='parserInternals'>
      <info>parse ENTITY references declarations  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, the Name given in the entity reference must match that in an entity declaration, except that well-formed documents need not declare any of the following entities: amp, lt, gt, apos, quot.  The declaration of a parameter entity must precede any reference to it.  Similarly, the declaration of a general entity must precede any reference to it which appears in a default value in an attribute-list declaration. Note that if entities are declared in the external subset or in external parameter entities, a non-validating processor is not obligated to read and process their declarations; for such documents, the rule that an entity must be declared is a well-formedness constraint only if standalone=&apos;yes&apos;.  [ WFC: Parsed Entity ] An entity reference must not contain the name of an unparsed entity</info>
      <return type='xmlEntityPtr' info='the xmlEntityPtr if found, or NULL otherwise.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseEntityValue' file='parserInternals'>
      <info>parse a value for ENTITY declarations  [9] EntityValue ::= &apos;&quot;&apos; ([^%&amp;&quot;] | PEReference | Reference)* &apos;&quot;&apos; | &quot;&apos;&quot; ([^%&amp;&apos;] | PEReference | Reference)* &quot;&apos;&quot;</info>
      <return type='xmlChar *' info='the EntityValue parsed with reference substituted or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='orig' type='xmlChar **' info='if non-NULL store a copy of the original entity value'/>
    </function>
    <function name='xmlParseEnumeratedType' file='parserInternals'>
      <info>parse an Enumerated attribute type.  [57] EnumeratedType ::= NotationType | Enumeration  [58] NotationType ::= &apos;NOTATION&apos; S &apos;(&apos; S? Name (S? &apos;|&apos; S? Name)* S? &apos;)&apos;</info>
      <return type='int' info='XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='tree' type='xmlEnumerationPtr *' info='the enumeration tree built while parsing'/>
    </function>
    <function name='xmlParseEnumerationType' file='parserInternals'>
      <info>parse an Enumeration attribute type.  [59] Enumeration ::= &apos;(&apos; S? Nmtoken (S? &apos;|&apos; S? Nmtoken)* S? &apos;)&apos;  [ VC: Enumeration ] Values of this type must match one of the Nmtoken tokens in the declaration</info>
      <return type='xmlEnumerationPtr' info='the enumeration attribute tree built while parsing'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseExtParsedEnt' file='parser'>
      <info>parse a general parsed entity An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
      <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseExternalEntity' file='parser'>
      <info>Parse an external general entity An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
      <return type='int' info='0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise'/>
      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler bloc (possibly NULL)'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
      <arg name='URL' type='const xmlChar *' info='the URL for the entity to load'/>
      <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
      <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
    </function>
    <function name='xmlParseExternalID' file='parserInternals'>
      <info>Parse an External ID or a Public ID  NOTE: Productions [75] and [83] interact badly since [75] can generate &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral  [75] ExternalID ::= &apos;SYSTEM&apos; S SystemLiteral | &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral  [83] PublicID ::= &apos;PUBLIC&apos; S PubidLiteral</info>
      <return type='xmlChar *' info='the function returns SystemLiteral and in the second case publicID receives PubidLiteral, is strict is off it is possible to return NULL and have publicID set.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='publicID' type='xmlChar **' info='a xmlChar** receiving PubidLiteral'/>
      <arg name='strict' type='int' info='indicate whether we should restrict parsing to only production [75], see NOTE below'/>
    </function>
    <function name='xmlParseExternalSubset' file='parserInternals'>
      <info>parse Markup declarations from an external subset  [30] extSubset ::= textDecl? extSubsetDecl  [31] extSubsetDecl ::= (markupdecl | conditionalSect | PEReference | S) *</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='ExternalID' type='const xmlChar *' info='the external identifier'/>
      <arg name='SystemID' type='const xmlChar *' info='the system identifier (or URL)'/>
    </function>
    <function name='xmlParseFile' file='parser'>
      <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
      <return type='xmlDocPtr' info='the resulting document tree if the file was wellformed, NULL otherwise.'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlParseMarkupDecl' file='parserInternals'>
      <info>parse Markup declarations  [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment  [ VC: Proper Declaration/PE Nesting ] Parameter-entity replacement text must be properly nested with markup declarations. That is to say, if either the first character or the last character of a markup declaration (markupdecl above) is contained in the replacement text for a parameter-entity reference, both must be contained in the same replacement text.  [ WFC: PEs in Internal Subset ] In the internal DTD subset, parameter-entity references can occur only where markup declarations can occur, not within markup declarations. (This does not apply to references that occur in external parameter entities or to the external subset.)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseMemory' file='parser'>
      <info>parse an XML in-memory block and build a tree.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='buffer' type='const char *' info='an pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
    </function>
    <function name='xmlParseMisc' file='parserInternals'>
      <info>parse an XML Misc* optional field.  [27] Misc ::= Comment | PI |  S</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseName' file='parserInternals'>
      <info>parse an XML name.  [4] NameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | &apos;:&apos; | CombiningChar | Extender  [5] Name ::= (Letter | &apos;_&apos; | &apos;:&apos;) (NameChar)*  [6] Names ::= Name (S Name)*</info>
      <return type='xmlChar *' info='the Name parsed or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseNamespace' file='parserInternals'>
      <info>xmlParseNamespace: parse specific PI &apos;&lt;?namespace ...&apos; constructs.  This is what the older xml-name Working Draft specified, a bunch of other stuff may still rely on it, so support is still here as if it was declared on the root of the Tree:-(  TODO: remove from library  To be removed at next drop of binary compatibility</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseNmtoken' file='parserInternals'>
      <info>parse an XML Nmtoken.  [7] Nmtoken ::= (NameChar)+  [8] Nmtokens ::= Nmtoken (S Nmtoken)*</info>
      <return type='xmlChar *' info='the Nmtoken parsed or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseNotationDecl' file='parserInternals'>
      <info>parse a notation declaration  [82] NotationDecl ::= &apos;&lt;!NOTATION&apos; S Name S (ExternalID |  PublicID) S? &apos;&gt;&apos;  Hence there is actually 3 choices: &apos;PUBLIC&apos; S PubidLiteral &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral and &apos;SYSTEM&apos; S SystemLiteral  See the NOTE on xmlParseExternalID().</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseNotationType' file='parserInternals'>
      <info>parse an Notation attribute type.  Note: the leading &apos;NOTATION&apos; S part has already being parsed...  [58] NotationType ::= &apos;NOTATION&apos; S &apos;(&apos; S? Name (S? &apos;|&apos; S? Name)* S? &apos;)&apos;  [ VC: Notation Attributes ] Values of this type must match one of the notation names included in the declaration; all notation names in the declaration must be declared.</info>
      <return type='xmlEnumerationPtr' info='the notation attribute tree built while parsing'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParsePEReference' file='parserInternals'>
      <info>parse PEReference declarations The entity content is handled directly by pushing it&apos;s content as a new input stream.  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;  [ WFC: No Recursion ] A parsed entity must not contain a recursive reference to itself, either directly or indirectly.  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ VC: Entity Declared ] In a document with an external subset or external parameter entities with &quot;standalone=&apos;no&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ WFC: In DTD ] Parameter-entity references may only appear in the DTD. NOTE: misleading but this is handled.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParsePI' file='parserInternals'>
      <info>parse an XML Processing Instruction.  [16] PI ::= &apos;&lt;?&apos; PITarget (S (Char* - (Char* &apos;?&gt;&apos; Char*)))? &apos;?&gt;&apos;  The processing is transfered to SAX once parsed.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParsePITarget' file='parserInternals'>
      <info>parse the name of a PI  [17] PITarget ::= Name - ((&apos;X&apos; | &apos;x&apos;) (&apos;M&apos; | &apos;m&apos;) (&apos;L&apos; | &apos;l&apos;))</info>
      <return type='xmlChar *' info='the PITarget name or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParsePubidLiteral' file='parserInternals'>
      <info>parse an XML public literal  [12] PubidLiteral ::= &apos;&quot;&apos; PubidChar* &apos;&quot;&apos; | &quot;&apos;&quot; (PubidChar - &quot;&apos;&quot;)* &quot;&apos;&quot;</info>
      <return type='xmlChar *' info='the PubidLiteral parsed or NULL.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseQuotedString' file='parserInternals'>
      <info>Parse and return a string between quotes or doublequotes  TODO: Deprecated, to  be removed at next drop of binary compatibility</info>
      <return type='xmlChar *' info='the string parser or NULL.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseReference' file='parserInternals'>
      <info>parse and handle entity references in content, depending on the SAX interface, this may end-up in a call to character() if this is a CharRef, a predefined entity, if there is no reference() callback. or if the parser was asked to switch to that mode.  [67] Reference ::= EntityRef | CharRef</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseSDDecl' file='parserInternals'>
      <info>parse the XML standalone declaration  [32] SDDecl ::= S &apos;standalone&apos; Eq ((&quot;&apos;&quot; (&apos;yes&apos; | &apos;no&apos;) &quot;&apos;&quot;) | (&apos;&quot;&apos; (&apos;yes&apos; | &apos;no&apos;)&apos;&quot;&apos;))  [ VC: Standalone Document Declaration ] TODO The standalone document declaration must have the value &quot;no&quot; if any external markup declarations contain declarations of: - attributes with default values, if elements to which these attributes apply appear in the document without specifications of values for these attributes, or - entities (other than amp, lt, gt, apos, quot), if references to those entities appear in the document, or - attributes with values subject to normalization, where the attribute appears in the document with a value which will change as a result of normalization, or - element types with element content, if white space occurs directly within any instance of those types.</info>
      <return type='int' info='1 if standalone, 0 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseStartTag' file='parserInternals'>
      <info>parse a start of tag either for rule element or EmptyElement. In both case we don&apos;t parse the tag closing chars.  [40] STag ::= &apos;&lt;&apos; Name (S Attribute)* S? &apos;&gt;&apos;  [ WFC: Unique Att Spec ] No attribute name may appear more than once in the same start-tag or empty-element tag.  [44] EmptyElemTag ::= &apos;&lt;&apos; Name (S Attribute)* S? &apos;/&gt;&apos;  [ WFC: Unique Att Spec ] No attribute name may appear more than once in the same start-tag or empty-element tag.  With namespace:  [NS 8] STag ::= &apos;&lt;&apos; QName (S Attribute)* S? &apos;&gt;&apos;  [NS 10] EmptyElement ::= &apos;&lt;&apos; QName (S Attribute)* S? &apos;/&gt;&apos;</info>
      <return type='xmlChar *' info='the element name parsed'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseSystemLiteral' file='parserInternals'>
      <info>parse an XML Literal  [11] SystemLiteral ::= (&apos;&quot;&apos; [^&quot;]* &apos;&quot;&apos;) | (&quot;&apos;&quot; [^&apos;]* &quot;&apos;&quot;)</info>
      <return type='xmlChar *' info='the SystemLiteral parsed or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseTextDecl' file='parserInternals'>
      <info>parse an XML declaration header for external entities  [77] TextDecl ::= &apos;&lt;?xml&apos; VersionInfo? EncodingDecl S? &apos;?&gt;&apos;  Question: Seems that EncodingDecl is mandatory ? Is that a typo ?</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseURI' file='uri'>
      <info>Parse an URI  URI-reference = [ absoluteURI | relativeURI ] [ &quot;#&quot; fragment ]</info>
      <return type='xmlURIPtr' info='a newly build xmlURIPtr or NULL in case of error'/>
      <arg name='str' type='const char *' info='the URI string to analyze'/>
    </function>
    <function name='xmlParseURIReference' file='uri'>
      <info>Parse an URI reference string and fills in the appropriate fields of the @uri structure  URI-reference = [ absoluteURI | relativeURI ] [ &quot;#&quot; fragment ]</info>
      <return type='int' info='0 or the error code'/>
      <arg name='uri' type='xmlURIPtr' info='pointer to an URI structure'/>
      <arg name='str' type='const char *' info='the string to analyze'/>
    </function>
    <function name='xmlParseVersionInfo' file='parserInternals'>
      <info>parse the XML version.  [24] VersionInfo ::= S &apos;version&apos; Eq (&apos; VersionNum &apos; | &quot; VersionNum &quot;)  [25] Eq ::= S? &apos;=&apos; S?</info>
      <return type='xmlChar *' info='the version string, e.g. &quot;1.0&quot;'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseVersionNum' file='parserInternals'>
      <info>parse the XML version value.  [26] VersionNum ::= ([a-zA-Z0-9_.:] | &apos;-&apos;)+</info>
      <return type='xmlChar *' info='the string giving the XML version number, or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParseXMLDecl' file='parserInternals'>
      <info>parse an XML declaration header  [23] XMLDecl ::= &apos;&lt;?xml&apos; VersionInfo EncodingDecl? SDDecl? S? &apos;?&gt;&apos;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlParserAddNodeInfo' file='parser'>
      <info>Insert node info record into the sorted sequence</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='info' type='const xmlParserNodeInfoPtr' info='a node info sequence pointer'/>
    </function>
    <function name='xmlParserError' file='xmlerror'>
      <info>Display and format an error messages, gives file, line, position and extra parameters.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </function>
    <function name='xmlParserFindNodeInfo' file='parser'>
      <info>Find the parser node info struct for a given node</info>
      <return type='const xmlParserNodeInfo *' info='an xmlParserNodeInfo block pointer or NULL'/>
      <arg name='ctx' type='const xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='node' type='const xmlNodePtr' info='an XML node within the tree'/>
    </function>
    <function name='xmlParserFindNodeInfoIndex' file='parser'>
      <info>xmlParserFindNodeInfoIndex : Find the index that the info record for the given node is or should be at in a sorted sequence</info>
      <return type='unsigned long' info='a long indicating the position of the record'/>
      <arg name='seq' type='const xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
      <arg name='node' type='const xmlNodePtr' info='an XML node pointer'/>
    </function>
    <function name='xmlParserGetDirectory' file='xmlIO'>
      <info>lookup the directory for that file</info>
      <return type='char *' info='a new allocated string containing the directory, or NULL.'/>
      <arg name='filename' type='const char *' info='the path to a file'/>
    </function>
    <function name='xmlParserHandlePEReference' file='parserInternals'>
      <info>[69] PEReference ::= &apos;%&apos; Name &apos;;&apos;  [ WFC: No Recursion ] A parsed entity must not contain a recursive reference to itself, either directly or indirectly.  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ VC: Entity Declared ] In a document with an external subset or external parameter entities with &quot;standalone=&apos;no&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ WFC: In DTD ] Parameter-entity references may only appear in the DTD. NOTE: misleading but this is handled.  A PEReference may have been detected in the current input stream the handling is done accordingly to http://www.w3.org/TR/REC-xml#entproc i.e. - Included in literal in entity values - Included as Parameter Entity reference within DTDs</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
    </function>
    <function name='xmlParserHandleReference' file='parserInternals'>
      <info>TODO: Remove, now deprecated ... the test is done directly in the content parsing routines.  [67] Reference ::= EntityRef | CharRef  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;  [ WFC: Entity Declared ] the Name given in the entity reference must match that in an entity declaration, except that well-formed documents need not declare any of the following entities: amp, lt, gt, apos, quot.  [ WFC: Parsed Entity ] An entity reference must not contain the name of an unparsed entity  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;  A PEReference may have been detected in the current input stream the handling is done accordingly to http://www.w3.org/TR/REC-xml#entproc</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
    </function>
    <function name='xmlParserInputBufferCreateFd' file='xmlIO'>
      <info>Create a buffered parser input for the progressive parsing for the input from a file descriptor</info>
      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
      <arg name='fd' type='int' info='a file descriptor number'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlParserInputBufferCreateFile' file='xmlIO'>
      <info>Create a buffered parser input for the progressive parsing of a FILE * buffered C I/O</info>
      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
      <arg name='file' type='FILE *' info='a FILE*'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlParserInputBufferCreateFilename' file='xmlIO'>
      <info>Create a buffered parser input for the progressive parsing of a file If filename is &quot;-&apos; then we use stdin as the input. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. Do an encoding check if enc == XML_CHAR_ENCODING_NONE</info>
      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
      <arg name='URI' type='const char *' info='a C string containing the URI or filename'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlParserInputBufferCreateIO' file='xmlIO'>
      <info>Create a buffered parser input for the progressive parsing for the input from an I/O handler</info>
      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
      <arg name='ioctx' type='void *' info='an I/O handler'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlParserInputBufferCreateMem' file='xmlIO'>
      <info>Create a buffered parser input for the progressive parsing for the input from a memory area.</info>
      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
      <arg name='mem' type='const char *' info='the memory input'/>
      <arg name='size' type='int' info='the length of the memory block'/>
      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
    </function>
    <function name='xmlParserInputBufferGrow' file='xmlIO'>
      <info>Grow up the content of the input buffer, the old data are preserved This routine handle the I18N transcoding to internal UTF-8 This routine is used when operating the parser in normal (pull) mode  TODO: one should be able to remove one extra copy by copying directly onto in-&gt;buffer or in-&gt;raw</info>
      <return type='int' info='the number of chars read and stored in the buffer, or -1 in case of error.'/>
      <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
      <arg name='len' type='int' info='indicative value of the amount of chars to read'/>
    </function>
    <function name='xmlParserInputBufferPush' file='xmlIO'>
      <info>Push the content of the arry in the input buffer This routine handle the I18N transcoding to internal UTF-8 This is used when operating the parser in progressive (push) mode.</info>
      <return type='int' info='the number of chars read and stored in the buffer, or -1 in case of error.'/>
      <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
      <arg name='len' type='int' info='the size in bytes of the array.'/>
      <arg name='buf' type='const char *' info='an char array'/>
    </function>
    <function name='xmlParserInputBufferRead' file='xmlIO'>
      <info>Refresh the content of the input buffer, the old data are considered consumed This routine handle the I18N transcoding to internal UTF-8</info>
      <return type='int' info='the number of chars read and stored in the buffer, or -1 in case of error.'/>
      <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
      <arg name='len' type='int' info='indicative value of the amount of chars to read'/>
    </function>
    <functype name='xmlParserInputDeallocate' file='parser'>
      <info>Callback for freeing some parser input allocations.</info>
      <return type='void'/>
      <arg name='str' type='xmlChar *' info='the string to deallocate'/>
    </functype>
    <function name='xmlParserInputGrow' file='parser'>
      <info>This function increase the input for the parser. It tries to preserve pointers to the input buffer, and keep already read data</info>
      <return type='int' info='the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity'/>
      <arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
      <arg name='len' type='int' info='an indicative size for the lookahead'/>
    </function>
    <function name='xmlParserInputRead' file='parser'>
      <info>This function refresh the input for the parser. It doesn&apos;t try to preserve pointers to the input buffer, and discard already read data</info>
      <return type='int' info='the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity'/>
      <arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
      <arg name='len' type='int' info='an indicative size for the lookahead'/>
    </function>
    <function name='xmlParserInputShrink' file='parserInternals'>
      <info>This function removes used input for the parser.</info>
      <return type='void'/>
      <arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
    </function>
    <function name='xmlParserPrintFileContext' file='xmlerror'>
      <info>Displays current context within the input content for error tracking</info>
      <return type='void'/>
      <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr input'/>
    </function>
    <function name='xmlParserPrintFileInfo' file='xmlerror'>
      <info>Displays the associated file and line informations for the current input</info>
      <return type='void'/>
      <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr input'/>
    </function>
    <function name='xmlParserValidityError' file='xmlerror'>
      <info>Display and format an validity error messages, gives file, line, position and extra parameters.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </function>
    <function name='xmlParserValidityWarning' file='xmlerror'>
      <info>Display and format a validity warning messages, gives file, line, position and extra parameters.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </function>
    <function name='xmlParserWarning' file='xmlerror'>
      <info>Display and format a warning messages, gives file, line, position and extra parameters.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an XML parser context'/>
      <arg name='msg' type='const char *' info='the message to display/transmit'/>
      <arg name='...' type='...' info='extra parameters for the message display'/>
    </function>
    <function name='xmlPedanticParserDefault' file='parser'>
      <info>Set and return the previous value for enabling pedantic warnings.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlPopInput' file='parserInternals'>
      <info>xmlPopInput: the current input pointed by ctxt-&gt;input came to an end pop it and return the next char.</info>
      <return type='xmlChar' info='the current xmlChar in the parser context'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlPrintURI' file='uri'>
      <info>Prints the URI in the stream @steam.</info>
      <return type='void'/>
      <arg name='stream' type='FILE *' info='a FILE* for the output'/>
      <arg name='uri' type='xmlURIPtr' info='pointer to an xmlURI'/>
    </function>
    <function name='xmlPushInput' file='parserInternals'>
      <info>xmlPushInput: switch to a new input stream which is stacked on top of the previous one(s).</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='input' type='xmlParserInputPtr' info='an XML parser input fragment (entity, XML fragment ...).'/>
    </function>
    <function name='xmlRMutexLock' file='threads'>
      <info>xmlRMutexLock() is used to lock a libxml2 token_r.</info>
      <return type='void'/>
      <arg name='tok' type='xmlRMutexPtr' info='the reentrant mutex'/>
    </function>
    <function name='xmlRMutexUnlock' file='threads'>
      <info>xmlRMutexUnlock() is used to unlock a libxml2 token_r.</info>
      <return type='void'/>
      <arg name='tok' type='xmlRMutexPtr' info='the reentrant mutex'/>
    </function>
    <functype name='xmlReallocFunc' file='xmlmemory'>
      <info>Signature for a realloc() implementation.</info>
      <return type='void *' info='a pointer to the newly reallocated block or NULL in case of error.'/>
      <arg name='mem' type='void *' info='an already allocated block of memory'/>
      <arg name='size' type='size_t' info='the new size requested in bytes'/>
    </functype>
    <function name='xmlReallocLoc' file='xmlmemory'>
      <info>a realloc() equivalent, with logging of the allocation info.</info>
      <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
      <arg name='ptr' type='void *' info='the initial memory block pointer'/>
      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
      <arg name='file' type='const char *' info='the file name or NULL'/>
      <arg name='line' type='int' info='the line number'/>
    </function>
    <function name='xmlReconciliateNs' file='tree'>
      <info>This function checks that all the namespaces declared within the given tree are properly declared. This is needed for example after Copy or Cut and then paste operations. The subtree may still hold pointers to namespace declarations outside the subtree or invalid/masked. As much as possible the function try to reuse the existing namespaces found in the new environment. If not possible the new namespaces are redeclared on @tree at the top of the given subtree.</info>
      <return type='int' info='the number of namespace declarations created or -1 in case of error.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='tree' type='xmlNodePtr' info='a node defining the subtree to reconciliate'/>
    </function>
    <function name='xmlRecoverDoc' file='parser'>
      <info>parse an XML in-memory document and build a tree. In the case the document is not Well Formed, a tree is built anyway</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
    </function>
    <function name='xmlRecoverFile' file='parser'>
      <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. In the case the document is not Well Formed, a tree is built anyway</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlRecoverMemory' file='parser'>
      <info>parse an XML in-memory block and build a tree. In the case the document is not Well Formed, a tree is built anyway</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='buffer' type='const char *' info='an pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
    </function>
    <functype name='xmlRegExecCallbacks' file='xmlregexp'>
      <info></info>
      <return type='void'/>
      <arg name='exec' type='xmlRegExecCtxtPtr' info=''/>
      <arg name='token' type='const xmlChar *' info=''/>
      <arg name='transdata' type='void *' info=''/>
      <arg name='inputdata' type='void *' info=''/>
    </functype>
    <function name='xmlRegExecPushString' file='xmlregexp'>
      <info>Push one input token in the execution context</info>
      <return type='int' info='1 if the regexp reached a final state, 0 if non-final, and a negative value in case of error.'/>
      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regexp execution context or NULL to indicate the end'/>
      <arg name='value' type='const xmlChar *' info='a string token input'/>
      <arg name='data' type='void *' info='data associated to the token to reuse in callbacks'/>
    </function>
    <function name='xmlRegFreeExecCtxt' file='xmlregexp'>
      <info>Free the structures associated to a regular expression evaulation context.</info>
      <return type='void'/>
      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regular expression evaulation context'/>
    </function>
    <function name='xmlRegFreeRegexp' file='xmlregexp'>
      <info>Free a regexp</info>
      <return type='void'/>
      <arg name='regexp' type='xmlRegexpPtr' info='the regexp'/>
    </function>
    <function name='xmlRegNewExecCtxt' file='xmlregexp'>
      <info>Build a context used for progressive evaluation of a regexp.</info>
      <return type='xmlRegExecCtxtPtr' info='the new context'/>
      <arg name='comp' type='xmlRegexpPtr' info='a precompiled regular expression'/>
      <arg name='callback' type='xmlRegExecCallbacks' info='a callback function used for handling progresses in the automata matching phase'/>
      <arg name='data' type='void *' info='the context data associated to the callback in this context'/>
    </function>
    <function name='xmlRegexpCompile' file='xmlregexp'>
      <info>Parses a regular expression conforming to XML Schemas Part 2 Datatype Appendix F and build an automata suitable for testing strings against that regular expression</info>
      <return type='xmlRegexpPtr' info='the compiled expression or NULL in case of error'/>
      <arg name='regexp' type='const xmlChar *' info='a regular expression string'/>
    </function>
    <function name='xmlRegexpExec' file='xmlregexp'>
      <info>Check if the regular expression generate the value</info>
      <return type='int' info='1 if it matches, 0 if not and a negativa value in case of error'/>
      <arg name='comp' type='xmlRegexpPtr' info='the compiled regular expression'/>
      <arg name='content' type='const xmlChar *' info='the value to check against the regular expression'/>
    </function>
    <function name='xmlRegexpIsDeterminist' file='xmlregexp'>
      <info>Check if the regular expression is determinist</info>
      <return type='int' info='1 if it yes, 0 if not and a negativa value in case of error'/>
      <arg name='comp' type='xmlRegexpPtr' info='the compiled regular expression'/>
    </function>
    <function name='xmlRegexpPrint' file='xmlregexp'>
      <info>Print the content of the compiled regular expression</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the file for the output debug'/>
      <arg name='regexp' type='xmlRegexpPtr' info='the compiled regexp'/>
    </function>
    <function name='xmlRegisterCharEncodingHandler' file='encoding'>
      <info>Register the char encoding handler, surprising, isn&apos;t it ?</info>
      <return type='void'/>
      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the xmlCharEncodingHandlerPtr handler block'/>
    </function>
    <function name='xmlRegisterDefaultInputCallbacks' file='xmlIO'>
      <info>Registers the default compiled-in I/O handlers.</info>
      <return type='void'/>
    </function>
    <function name='xmlRegisterDefaultOutputCallbacks' file='xmlIO'>
      <info>Registers the default compiled-in I/O handlers.</info>
      <return type='void'/>
    </function>
    <function name='xmlRegisterHTTPPostCallbacks' file='xmlIO'>
      <info>By default, libxml submits HTTP output requests using the &quot;PUT&quot; method. Calling this method changes the HTTP output method to use the &quot;POST&quot; method instead.</info>
      <return type='void'/>
    </function>
    <function name='xmlRegisterInputCallbacks' file='xmlIO'>
      <info>Register a new set of I/O callback for handling parser input.</info>
      <return type='int' info='the registered handler number or -1 in case of error'/>
      <arg name='matchFunc' type='xmlInputMatchCallback' info='the xmlInputMatchCallback'/>
      <arg name='openFunc' type='xmlInputOpenCallback' info='the xmlInputOpenCallback'/>
      <arg name='readFunc' type='xmlInputReadCallback' info='the xmlInputReadCallback'/>
      <arg name='closeFunc' type='xmlInputCloseCallback' info='the xmlInputCloseCallback'/>
    </function>
    <function name='xmlRegisterNodeDefault' file='globals'>
      <info></info>
      <return type='xmlRegisterNodeFunc' info='the previous value of the registration function'/>
      <arg name='func' type='xmlRegisterNodeFunc' info='function pointer to the new RegisterNodeFunc'/>
    </function>
    <functype name='xmlRegisterNodeFunc' file='globals'>
      <info></info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info=''/>
    </functype>
    <function name='xmlRegisterOutputCallbacks' file='xmlIO'>
      <info>Register a new set of I/O callback for handling output.</info>
      <return type='int' info='the registered handler number or -1 in case of error'/>
      <arg name='matchFunc' type='xmlOutputMatchCallback' info='the xmlOutputMatchCallback'/>
      <arg name='openFunc' type='xmlOutputOpenCallback' info='the xmlOutputOpenCallback'/>
      <arg name='writeFunc' type='xmlOutputWriteCallback' info='the xmlOutputWriteCallback'/>
      <arg name='closeFunc' type='xmlOutputCloseCallback' info='the xmlOutputCloseCallback'/>
    </function>
    <function name='xmlRemoveID' file='valid'>
      <info>Remove the given attribute from the ID table maintained internally.</info>
      <return type='int' info='-1 if the lookup failed and 0 otherwise'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlRemoveProp' file='tree'>
      <info>Unlink and free one attribute, all the content is freed too Note this doesn&apos;t work for namespace definition attributes</info>
      <return type='int' info='0 if success and -1 in case of error.'/>
      <arg name='cur' type='xmlAttrPtr' info='an attribute'/>
    </function>
    <function name='xmlRemoveRef' file='valid'>
      <info>Remove the given attribute from the Ref table maintained internally.</info>
      <return type='int' info='-1 if the lookup failed and 0 otherwise'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
    </function>
    <function name='xmlReplaceNode' file='tree'>
      <info>Unlink the old node from it&apos;s current context, prune the new one at the same place. If @cur was already inserted in a document it is first unlinked from its existing context.</info>
      <return type='xmlNodePtr' info='the @old node'/>
      <arg name='old' type='xmlNodePtr' info='the old node'/>
      <arg name='cur' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlSAXParseDTD' file='parser'>
      <info>Load and parse an external subset.</info>
      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error.'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='ExternalID' type='const xmlChar *' info='a NAME* containing the External ID of the DTD'/>
      <arg name='SystemID' type='const xmlChar *' info='a NAME* containing the URL to the DTD'/>
    </function>
    <function name='xmlSAXParseDoc' file='parser'>
      <info>parse an XML in-memory document and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
      <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
    </function>
    <function name='xmlSAXParseEntity' file='parser'>
      <info>parse an XML external entity out of context and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.  [78] extParsedEnt ::= TextDecl? content  This correspond to a &quot;Well Balanced&quot; chunk</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='filename' type='const char *' info='the filename'/>
    </function>
    <function name='xmlSAXParseFile' file='parser'>
      <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
    </function>
    <function name='xmlSAXParseFileWithData' file='parser'>
      <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.  User data (void *) is stored within the parser context in the context&apos;s _private member, so it is available nearly everywhere in libxml</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='filename' type='const char *' info='the filename'/>
      <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
      <arg name='data' type='void *' info='the userdata'/>
    </function>
    <function name='xmlSAXParseMemory' file='parser'>
      <info>parse an XML in-memory block and use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='buffer' type='const char *' info='an pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
      <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read not Well Formed documents'/>
    </function>
    <function name='xmlSAXParseMemoryWithData' file='parser'>
      <info>parse an XML in-memory block and use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.  User data (void *) is stored within the parser context in the context&apos;s _private member, so it is available nearly everywhere in libxml</info>
      <return type='xmlDocPtr' info='the resulting document tree'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
      <arg name='buffer' type='const char *' info='an pointer to a char array'/>
      <arg name='size' type='int' info='the size of the array'/>
      <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
      <arg name='data' type='void *' info='the userdata'/>
    </function>
    <function name='xmlSAXUserParseFile' file='parser'>
      <info>parse an XML file and call the given SAX handler routines. Automatic support for ZLIB/Compress compressed document is provided</info>
      <return type='int' info='0 in case of success or a error number otherwise'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='filename' type='const char *' info='a file name'/>
    </function>
    <function name='xmlSAXUserParseMemory' file='parser'>
      <info>A better SAX parsing routine. parse an XML in-memory buffer and call the given SAX handler routines.</info>
      <return type='int' info='0 in case of success or a error number otherwise'/>
      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
      <arg name='buffer' type='const char *' info='an in-memory XML document input'/>
      <arg name='size' type='int' info='the length of the XML document in bytes'/>
    </function>
    <function name='xmlSaveFile' file='tree'>
      <info>Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is &quot;-&quot; the stdout file is used.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='filename' type='const char *' info='the filename (or URL)'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlSaveFileEnc' file='tree'>
      <info>Dump an XML document, converting it to the given encoding</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='filename' type='const char *' info='the filename (or URL)'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the name of an encoding (or NULL)'/>
    </function>
    <function name='xmlSaveFileTo' file='tree'>
      <info>Dump an XML document to an I/O buffer.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='an output I/O buffer'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the encoding if any assuming the I/O layer handles the trancoding'/>
    </function>
    <function name='xmlSaveFormatFile' file='tree'>
      <info>Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is &quot;-&quot; the stdout file is used. If @format is set then the document will be indented on output.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='filename' type='const char *' info='the filename (or URL)'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlSaveFormatFileEnc' file='tree'>
      <info>Dump an XML document to a file or an URL.</info>
      <return type='int' info='the number of bytes written or -1 in case of error.'/>
      <arg name='filename' type='const char *' info='the filename or URL to output'/>
      <arg name='cur' type='xmlDocPtr' info='the document being saved'/>
      <arg name='encoding' type='const char *' info='the name of the encoding to use or NULL.'/>
      <arg name='format' type='int' info='should formatting spaces be added.'/>
    </function>
    <function name='xmlSaveFormatFileTo' file='tree'>
      <info>Dump an XML document to an I/O buffer.</info>
      <return type='int' info='the number of bytes written or -1 in case of failure.'/>
      <arg name='buf' type='xmlOutputBufferPtr' info='an output I/O buffer'/>
      <arg name='cur' type='xmlDocPtr' info='the document'/>
      <arg name='encoding' type='const char *' info='the encoding if any assuming the I/O layer handles the trancoding'/>
      <arg name='format' type='int' info='should formatting spaces been added'/>
    </function>
    <function name='xmlSaveUri' file='uri'>
      <info>Save the URI as an escaped string</info>
      <return type='xmlChar *' info='a new string (to be deallocated by caller)'/>
      <arg name='uri' type='xmlURIPtr' info='pointer to an xmlURI'/>
    </function>
    <function name='xmlScanName' file='parserInternals'>
      <info>Trickery: parse an XML name but without consuming the input flow Needed for rollback cases. Used only when parsing entities references.  TODO: seems deprecated now, only used in the default part of xmlParserHandleReference  [4] NameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | &apos;:&apos; | CombiningChar | Extender  [5] Name ::= (Letter | &apos;_&apos; | &apos;:&apos;) (NameChar)*  [6] Names ::= Name (S Name)*</info>
      <return type='xmlChar *' info='the Name parsed or NULL'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlSearchNs' file='tree'>
      <info>Search a Ns registered under a given name space for a document. recurse on the parents until it finds the defined namespace or return NULL otherwise. @nameSpace can be NULL, this is a search for the default namespace. We don&apos;t allow to cross entities boundaries. If you don&apos;t declare the namespace within those you will be in troubles !!! A warning is generated to cover this case.</info>
      <return type='xmlNsPtr' info='the namespace pointer or NULL.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='node' type='xmlNodePtr' info='the current node'/>
      <arg name='nameSpace' type='const xmlChar *' info='the namespace prefix'/>
    </function>
    <function name='xmlSearchNsByHref' file='tree'>
      <info>Search a Ns aliasing a given URI. Recurse on the parents until it finds the defined namespace or return NULL otherwise.</info>
      <return type='xmlNsPtr' info='the namespace pointer or NULL.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='node' type='xmlNodePtr' info='the current node'/>
      <arg name='href' type='const xmlChar *' info='the namespace value'/>
    </function>
    <function name='xmlSetBufferAllocationScheme' file='tree'>
      <info>Set the buffer allocation method.  Types are XML_BUFFER_ALLOC_EXACT - use exact sizes, keeps memory usage down XML_BUFFER_ALLOC_DOUBLEIT - double buffer when extra needed, improves performance</info>
      <return type='void'/>
      <arg name='scheme' type='xmlBufferAllocationScheme' info='allocation method to use'/>
    </function>
    <function name='xmlSetCompressMode' file='tree'>
      <info>set the default compression mode used, ZLIB based Correct values: 0 (uncompressed) to 9 (max compression)</info>
      <return type='void'/>
      <arg name='mode' type='int' info='the compression ratio'/>
    </function>
    <function name='xmlSetDocCompressMode' file='tree'>
      <info>set the compression ratio for a document, ZLIB based Correct values: 0 (uncompressed) to 9 (max compression)</info>
      <return type='void'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='mode' type='int' info='the compression ratio'/>
    </function>
    <function name='xmlSetEntityReferenceFunc' file='parserInternals'>
      <info>Set the function to call call back when a xml reference has been made</info>
      <return type='void'/>
      <arg name='func' type='xmlEntityReferenceFunc' info='A valid function'/>
    </function>
    <function name='xmlSetExternalEntityLoader' file='parser'>
      <info>Changes the defaultexternal entity resolver function for the application</info>
      <return type='void'/>
      <arg name='f' type='xmlExternalEntityLoader' info='the new entity resolver function'/>
    </function>
    <function name='xmlSetFeature' file='parser'>
      <info>Change the current value of one feature of this parser instance</info>
      <return type='int' info='-1 in case or error, 0 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML/HTML parser context'/>
      <arg name='name' type='const char *' info='the feature name'/>
      <arg name='value' type='void *' info='pointer to the location of the new value'/>
    </function>
    <function name='xmlSetGenericErrorFunc' file='xmlerror'>
      <info>Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing nor validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='the new error handling context'/>
      <arg name='handler' type='xmlGenericErrorFunc' info='the new handler function'/>
    </function>
    <function name='xmlSetListDoc' file='tree'>
      <info>update all nodes in the list to point to the right document</info>
      <return type='void'/>
      <arg name='list' type='xmlNodePtr' info='the first element'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlSetNs' file='tree'>
      <info>Associate a namespace to a node, a posteriori.</info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info='a node in the document'/>
      <arg name='ns' type='xmlNsPtr' info='a namespace pointer'/>
    </function>
    <function name='xmlSetNsProp' file='tree'>
      <info>Set (or reset) an attribute carried by a node. The ns structure must be in scope, this is not checked.</info>
      <return type='xmlAttrPtr' info='the attribute pointer.'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='ns' type='xmlNsPtr' info='the namespace definition'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='value' type='const xmlChar *' info='the attribute value'/>
    </function>
    <function name='xmlSetProp' file='tree'>
      <info>Set (or reset) an attribute carried by a node.</info>
      <return type='xmlAttrPtr' info='the attribute pointer.'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='value' type='const xmlChar *' info='the attribute value'/>
    </function>
    <function name='xmlSetTreeDoc' file='tree'>
      <info>update all nodes under the tree to point to the right document</info>
      <return type='void'/>
      <arg name='tree' type='xmlNodePtr' info='the top element'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
    </function>
    <function name='xmlSetupParserForBuffer' file='parser'>
      <info>Setup the parser context to parse a new buffer; Clears any prior contents from the parser context. The buffer parameter must not be NULL, but the filename parameter can be</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='buffer' type='const xmlChar *' info='a xmlChar * buffer'/>
      <arg name='filename' type='const char *' info='a file name'/>
    </function>
    <function name='xmlShell' file='debugXML'>
      <info>Implements the XML shell This allow to load, validate, view, modify and save a document using a environment similar to a UNIX commandline.</info>
      <return type='void'/>
      <arg name='doc' type='xmlDocPtr' info='the initial document'/>
      <arg name='filename' type='char *' info='the output buffer'/>
      <arg name='input' type='xmlShellReadlineFunc' info='the line reading function'/>
      <arg name='output' type='FILE *' info='the output FILE*, defaults to stdout if NULL'/>
    </function>
    <function name='xmlShellBase' file='debugXML'>
      <info>Implements the XML shell function &quot;base&quot; dumps the current XML base of the node</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellCat' file='debugXML'>
      <info>Implements the XML shell function &quot;cat&quot; dumps the serialization node content (XML or HTML).</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <functype name='xmlShellCmd' file='debugXML'>
      <info>This is a generic signature for the XML shell functions.</info>
      <return type='int' info='an int, negative returns indicating errors.'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='a shell context'/>
      <arg name='arg' type='char *' info='a string argument'/>
      <arg name='node' type='xmlNodePtr' info='a first node'/>
      <arg name='node2' type='xmlNodePtr' info='a second node'/>
    </functype>
    <function name='xmlShellDir' file='debugXML'>
      <info>Implements the XML shell function &quot;dir&quot; dumps informations about the node (namespace, attributes, content).</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellDu' file='debugXML'>
      <info>Implements the XML shell function &quot;du&quot; show the structure of the subtree under node @tree If @tree is null, the command works on the current node.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='tree' type='xmlNodePtr' info='a node defining a subtree'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellList' file='debugXML'>
      <info>Implements the XML shell function &quot;ls&quot; Does an Unix like listing of the given node (like a directory)</info>
      <return type='int' info='0'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='arg' type='char *' info='unused'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellLoad' file='debugXML'>
      <info>Implements the XML shell function &quot;load&quot; loads a new document specified by the filename</info>
      <return type='int' info='0 or -1 if loading failed'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='filename' type='char *' info='the file name'/>
      <arg name='node' type='xmlNodePtr' info='unused'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellPrintNode' file='debugXML'>
      <info>Print node to the output FILE</info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info='a non-null node to print to the output FILE'/>
    </function>
    <function name='xmlShellPrintXPathError' file='debugXML'>
      <info>Print the xpath error to libxml default error channel</info>
      <return type='void'/>
      <arg name='errorType' type='int' info='valid xpath error id'/>
      <arg name='arg' type='const char *' info='the argument that cause xpath to fail'/>
    </function>
    <function name='xmlShellPrintXPathResult' file='debugXML'>
      <info>Prints result to the output FILE</info>
      <return type='void'/>
      <arg name='list' type='xmlXPathObjectPtr' info='a valid result generated by an xpath evaluation'/>
    </function>
    <function name='xmlShellPwd' file='debugXML'>
      <info>Implements the XML shell function &quot;pwd&quot; Show the full path from the root to the node, if needed building thumblers when similar elements exists at a given ancestor level. The output is compatible with XPath commands.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='buffer' type='char *' info='the output buffer'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <functype name='xmlShellReadlineFunc' file='debugXML'>
      <info>This is a generic signature for the XML shell input function.</info>
      <return type='char *' info='a string which will be freed by the Shell.'/>
      <arg name='prompt' type='char *' info='a string prompt'/>
    </functype>
    <function name='xmlShellSave' file='debugXML'>
      <info>Implements the XML shell function &quot;save&quot; Write the current document to the filename, or it&apos;s original name</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='filename' type='char *' info='the file name (optional)'/>
      <arg name='node' type='xmlNodePtr' info='unused'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellValidate' file='debugXML'>
      <info>Implements the XML shell function &quot;validate&quot; Validate the document, if a DTD path is provided, then the validation is done against the given DTD.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='dtd' type='char *' info='the DTD URI (optional)'/>
      <arg name='node' type='xmlNodePtr' info='unused'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlShellWrite' file='debugXML'>
      <info>Implements the XML shell function &quot;write&quot; Write the current node to the filename, it saves the serialization of the subtree under the @node specified</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='ctxt' type='xmlShellCtxtPtr' info='the shell context'/>
      <arg name='filename' type='char *' info='the file name'/>
      <arg name='node' type='xmlNodePtr' info='a node in the tree'/>
      <arg name='node2' type='xmlNodePtr' info='unused'/>
    </function>
    <function name='xmlSkipBlankChars' file='parserInternals'>
      <info>skip all blanks character found at that point in the input streams. It pops up finished entities in the process if allowable at that point.</info>
      <return type='int' info='the number of space chars skipped'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
    </function>
    <function name='xmlSnprintfElementContent' file='valid'>
      <info>This will dump the content of the element content definition Intended just for the debug routine</info>
      <return type='void'/>
      <arg name='buf' type='char *' info='an output buffer'/>
      <arg name='size' type='int' info='the buffer size'/>
      <arg name='content' type='xmlElementContentPtr' info='An element table'/>
      <arg name='glob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
    </function>
    <function name='xmlSplitQName' file='parserInternals'>
      <info>parse an UTF8 encoded XML qualified name string  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
      <return type='xmlChar *' info='the local part, and prefix is updated to get the Prefix if any.'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
      <arg name='name' type='const xmlChar *' info='an XML parser context'/>
      <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
    </function>
    <function name='xmlSplitQName2' file='valid'>
      <info>parse an XML qualified name string  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
      <return type='xmlChar *' info='NULL if not a QName, otherwise the local part, and prefix is updated to get the Prefix if any.'/>
      <arg name='name' type='const xmlChar *' info='an XML parser context'/>
      <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
    </function>
    <function name='xmlSprintfElementContent' file='valid'>
      <info>Deprecated, unsafe, use xmlSnprintfElementContent</info>
      <return type='void'/>
      <arg name='buf' type='char *' info='an output buffer'/>
      <arg name='content' type='xmlElementContentPtr' info='An element table'/>
      <arg name='glob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
    </function>
    <function name='xmlStopParser' file='parser'>
      <info>Blocks further parser processing</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
    </function>
    <function name='xmlStrEqual' file='parser'>
      <info>Check if both string are equal of have same content Should be a bit more readable and faster than xmlStrEqual()</info>
      <return type='int' info='1 if they are equal, 0 if they are different'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrcasecmp' file='parser'>
      <info>a strcasecmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrcasestr' file='parser'>
      <info>a case-ignoring strstr for xmlChar&apos;s</info>
      <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
      <arg name='val' type='xmlChar *' info='the xmlChar to search (needle)'/>
    </function>
    <function name='xmlStrcat' file='parser'>
      <info>a strcat for array of xmlChar&apos;s. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of &apos;0&apos;.</info>
      <return type='xmlChar *' info='a new xmlChar * containing the concatenated string.'/>
      <arg name='cur' type='xmlChar *' info='the original xmlChar * array'/>
      <arg name='add' type='const xmlChar *' info='the xmlChar * array added'/>
    </function>
    <function name='xmlStrchr' file='parser'>
      <info>a strchr for xmlChar&apos;s</info>
      <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array'/>
      <arg name='val' type='xmlChar' info='the xmlChar to search'/>
    </function>
    <function name='xmlStrcmp' file='parser'>
      <info>a strcmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
    </function>
    <function name='xmlStrdup' file='parser'>
      <info>a strdup for array of xmlChar&apos;s. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of &apos;0&apos;.</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const xmlChar *' info='the input xmlChar *'/>
    </function>
    <functype name='xmlStrdupFunc' file='xmlmemory'>
      <info>Signature for an strdup() implementation.</info>
      <return type='char *' info='the copy of the string or NULL in case of error.'/>
      <arg name='str' type='const char *' info='a zero terminated string'/>
    </functype>
    <function name='xmlStringCurrentChar' file='parserInternals'>
      <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer.</info>
      <return type='int' info='the current char value and its length'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
      <arg name='cur' type='const xmlChar *' info='pointer to the beginning of the char'/>
      <arg name='len' type='int *' info='pointer to the length of the char read'/>
    </function>
    <function name='xmlStringDecodeEntities' file='parserInternals'>
      <info>Takes a entity string content and process to do the adequate substitutions.  [67] Reference ::= EntityRef | CharRef  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;</info>
      <return type='xmlChar *' info='A newly allocated string with the substitution done. The caller must deallocate it !'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='str' type='const xmlChar *' info='the input string'/>
      <arg name='what' type='int' info='combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF'/>
      <arg name='end' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
      <arg name='end2' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
      <arg name='end3' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
    </function>
    <function name='xmlStringGetNodeList' file='tree'>
      <info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
      <return type='xmlNodePtr' info='a pointer to the first child'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
    </function>
    <function name='xmlStringLenGetNodeList' file='tree'>
      <info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
      <return type='xmlNodePtr' info='a pointer to the first child'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='value' type='const xmlChar *' info='the value of the text'/>
      <arg name='len' type='int' info='the length of the string value'/>
    </function>
    <function name='xmlStrlen' file='parser'>
      <info>length of a xmlChar&apos;s string</info>
      <return type='int' info='the number of xmlChar contained in the ARRAY.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array'/>
    </function>
    <function name='xmlStrncasecmp' file='parser'>
      <info>a strncasecmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
      <arg name='len' type='int' info='the max comparison length'/>
    </function>
    <function name='xmlStrncat' file='parser'>
      <info>a strncat for array of xmlChar&apos;s, it will extend @cur with the len first bytes of @add.</info>
      <return type='xmlChar *' info='a new xmlChar *, the original @cur is reallocated if needed and should not be freed'/>
      <arg name='cur' type='xmlChar *' info='the original xmlChar * array'/>
      <arg name='add' type='const xmlChar *' info='the xmlChar * array added'/>
      <arg name='len' type='int' info='the length of @add'/>
    </function>
    <function name='xmlStrncmp' file='parser'>
      <info>a strncmp for xmlChar&apos;s</info>
      <return type='int' info='the integer result of the comparison'/>
      <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
      <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
      <arg name='len' type='int' info='the max comparison length'/>
    </function>
    <function name='xmlStrndup' file='parser'>
      <info>a strndup for array of xmlChar&apos;s</info>
      <return type='xmlChar *' info='a new xmlChar * or NULL'/>
      <arg name='cur' type='const xmlChar *' info='the input xmlChar *'/>
      <arg name='len' type='int' info='the len of @cur'/>
    </function>
    <function name='xmlStrstr' file='parser'>
      <info>a strstr for xmlChar&apos;s</info>
      <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
      <arg name='val' type='const xmlChar *' info='the xmlChar to search (needle)'/>
    </function>
    <function name='xmlStrsub' file='parser'>
      <info>Extract a substring of a given string</info>
      <return type='xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
      <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
      <arg name='start' type='int' info='the index of the first char (zero based)'/>
      <arg name='len' type='int' info='the length of the substring'/>
    </function>
    <function name='xmlSubstituteEntitiesDefault' file='parser'>
      <info>Set and return the previous value for default entity support. Initially the parser always keep entity references instead of substituting entity values in the output. This function has to be used to change the default parser behavior SAX::substituteEntities() has to be used for changing that on a file by file basis.</info>
      <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
      <arg name='val' type='int' info='int 0 or 1'/>
    </function>
    <function name='xmlSwitchEncoding' file='parserInternals'>
      <info>change the input functions when discovering the character encoding of a given entity.</info>
      <return type='int' info='0 in case of success, -1 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='enc' type='xmlCharEncoding' info='the encoding value (number)'/>
    </function>
    <function name='xmlSwitchToEncoding' file='parserInternals'>
      <info>change the input functions when discovering the character encoding of a given entity.</info>
      <return type='int' info='0 in case of success, -1 otherwise'/>
      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
    </function>
    <function name='xmlTextConcat' file='tree'>
      <info>Concat the given string at the end of the existing node content</info>
      <return type='void'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='content' type='const xmlChar *' info='the content'/>
      <arg name='len' type='int' info='@content length'/>
    </function>
    <function name='xmlTextMerge' file='tree'>
      <info>Merge two text nodes into one</info>
      <return type='xmlNodePtr' info='the first text node augmented'/>
      <arg name='first' type='xmlNodePtr' info='the first text node'/>
      <arg name='second' type='xmlNodePtr' info='the second text node being merged'/>
    </function>
    <function name='xmlTextReaderAttributeCount' file='xmlreader'>
      <info>Provides the number of attributes of the current node</info>
      <return type='int' info='0 i no attributes, -1 in case of error or the attribute count'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderBaseUri' file='xmlreader'>
      <info>The base URI of the node.</info>
      <return type='xmlChar *' info='the base URI or NULL if not available'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderClose' file='xmlreader'>
      <info>This method releases any resources allocated by the current instance changes the state to Closed and close any underlying input.</info>
      <return type='int' info='0 or -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderCurrentDoc' file='xmlreader'>
      <info>Hacking interface allowing to get the xmlDocPtr correponding to the current document being accessed by the xmlTextReader. This is dangerous because the associated node may be destroyed on the next Reads.</info>
      <return type='xmlDocPtr' info='the xmlDocPtr or NULL in case of error.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderCurrentNode' file='xmlreader'>
      <info>Hacking interface allowing to get the xmlNodePtr correponding to the current node being accessed by the xmlTextReader. This is dangerous because the underlying node may be destroyed on the next Reads.</info>
      <return type='xmlNodePtr' info='the xmlNodePtr or NULL in case of error.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderDepth' file='xmlreader'>
      <info>The depth of the node in the tree.</info>
      <return type='int' info='the depth or -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderGetAttribute' file='xmlreader'>
      <info>Provides the value of the attribute with the specified qualified name.</info>
      <return type='xmlChar *' info='a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='name' type='const xmlChar *' info='the qualified name of the attribute.'/>
    </function>
    <function name='xmlTextReaderGetAttributeNo' file='xmlreader'>
      <info>Provides the value of the attribute with the specified index relative to the containing element.</info>
      <return type='xmlChar *' info='a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='no' type='int' info='the zero-based index of the attribute relative to the containing element'/>
    </function>
    <function name='xmlTextReaderGetAttributeNs' file='xmlreader'>
      <info>Provides the value of the specified attribute</info>
      <return type='xmlChar *' info='a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='localName' type='const xmlChar *' info='the local name of the attribute.'/>
      <arg name='namespaceURI' type='const xmlChar *' info='the namespace URI of the attribute.'/>
    </function>
    <function name='xmlTextReaderGetParserProp' file='xmlreader'>
      <info>Read the parser internal property.</info>
      <return type='int' info='the value, usually 0 or 1, or -1 in case of error.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='prop' type='int' info='the xmlParserProperties to get'/>
    </function>
    <function name='xmlTextReaderGetRemainder' file='xmlreader'>
      <info>Method to get the remainder of the buffered XML. this method stops the parser, set its state to End Of File and return the input stream with what is left that the parser did not use.</info>
      <return type='xmlParserInputBufferPtr' info='the xmlParserInputBufferPtr attached to the XML or NULL in case of error.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderHasAttributes' file='xmlreader'>
      <info>Whether the node has attributes.</info>
      <return type='int' info='1 if true, 0 if false, and -1 in case or error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderHasValue' file='xmlreader'>
      <info>Whether the node can have a text value.</info>
      <return type='int' info='1 if true, 0 if false, and -1 in case or error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderIsDefault' file='xmlreader'>
      <info>Whether an Attribute  node was generated from the default value defined in the DTD or schema.</info>
      <return type='int' info='0 if not defaulted, 1 if defaulted, and -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderIsEmptyElement' file='xmlreader'>
      <info>Check if the current node is empty</info>
      <return type='int' info='1 if empty, 0 if not and -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderLocalName' file='xmlreader'>
      <info>The local name of the node.</info>
      <return type='xmlChar *' info='the local name or NULL if not available'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderLookupNamespace' file='xmlreader'>
      <info>Resolves a namespace prefix in the scope of the current element.</info>
      <return type='xmlChar *' info='a string containing the namespace URI to which the prefix maps or NULL in case of error. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='prefix' type='const xmlChar *' info='the prefix whose namespace URI is to be resolved. To return the default namespace, specify NULL'/>
    </function>
    <function name='xmlTextReaderMoveToAttribute' file='xmlreader'>
      <info>Moves the position of the current instance to the attribute with the specified qualified name.</info>
      <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='name' type='const xmlChar *' info='the qualified name of the attribute.'/>
    </function>
    <function name='xmlTextReaderMoveToAttributeNo' file='xmlreader'>
      <info>Moves the position of the current instance to the attribute with the specified index relative to the containing element.</info>
      <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='no' type='int' info='the zero-based index of the attribute relative to the containing element.'/>
    </function>
    <function name='xmlTextReaderMoveToAttributeNs' file='xmlreader'>
      <info>Moves the position of the current instance to the attribute with the specified local name and namespace URI.</info>
      <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='localName' type='const xmlChar *' info='the local name of the attribute.'/>
      <arg name='namespaceURI' type='const xmlChar *' info='the namespace URI of the attribute.'/>
    </function>
    <function name='xmlTextReaderMoveToElement' file='xmlreader'>
      <info>Moves the position of the current instance to the node that contains the current Attribute  node.</info>
      <return type='int' info='1 in case of success, -1 in case of error, 0 if not moved'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderMoveToFirstAttribute' file='xmlreader'>
      <info>Moves the position of the current instance to the first attribute associated with the current node.</info>
      <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderMoveToNextAttribute' file='xmlreader'>
      <info>Moves the position of the current instance to the next attribute associated with the current node.</info>
      <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderName' file='xmlreader'>
      <info>The qualified name of the node, equal to Prefix :LocalName.</info>
      <return type='xmlChar *' info='the local name or NULL if not available'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderNamespaceUri' file='xmlreader'>
      <info>The URI defining the namespace associated with the node.</info>
      <return type='xmlChar *' info='the namespace URI or NULL if not available'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderNodeType' file='xmlreader'>
      <info>Get the node type of the current node Reference: http://dotgnu.org/pnetlib-doc/System/Xml/XmlNodeType.html</info>
      <return type='int' info='the xmlNodeType of the current node or -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderNormalization' file='xmlreader'>
      <info>The value indicating whether to normalize white space and attribute values. Since attribute value and end of line normalizations are a MUST in the XML specification only the value true is accepted. The broken bahaviour of accepting out of range character entities like &amp;#0; is of course not supported either.</info>
      <return type='int' info='1 or -1 in case of error.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderPrefix' file='xmlreader'>
      <info>A shorthand reference to the namespace associated with the node.</info>
      <return type='xmlChar *' info='the prefix or NULL if not available'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderQuoteChar' file='xmlreader'>
      <info>The quotation mark character used to enclose the value of an attribute.</info>
      <return type='int' info='&quot; or &apos; and -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderRead' file='xmlreader'>
      <info>Moves the position of the current instance to the next node in the stream, exposing its properties.</info>
      <return type='int' info='1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderReadAttributeValue' file='xmlreader'>
      <info>Parses an attribute value into one or more Text and EntityReference nodes.</info>
      <return type='int' info='1 in case of success, 0 if the reader was not positionned on an ttribute node or all the attribute values have been read, or -1 in case of error.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderReadInnerXml' file='xmlreader'>
      <info>Reads the contents of the current node, including child nodes and markup.</info>
      <return type='xmlChar *' info='a string containing the XML content, or NULL if the current node is neither an element nor attribute, or has no child nodes. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderReadOuterXml' file='xmlreader'>
      <info>Reads the contents of the current node, including child nodes and markup.</info>
      <return type='xmlChar *' info='a string containing the XML content, or NULL if the current node is neither an element nor attribute, or has no child nodes. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderReadState' file='xmlreader'>
      <info>Gets the read state of the reader.</info>
      <return type='int' info='the state value, or -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderReadString' file='xmlreader'>
      <info>Reads the contents of an element or a text node as a string.</info>
      <return type='xmlChar *' info='a string containing the contents of the Element or Text node, or NULL if the reader is positioned on any other type of node. The string must be deallocated by the caller.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderSetParserProp' file='xmlreader'>
      <info>Change the parser processing behaviour by changing some of its internal properties. Note that some properties can only be changed before any read has been done.</info>
      <return type='int' info='0 if the call was successful, or -1 in case of error'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
      <arg name='prop' type='int' info='the xmlParserProperties to set'/>
      <arg name='value' type='int' info='usually 0 or 1 to (de)activate it'/>
    </function>
    <function name='xmlTextReaderValue' file='xmlreader'>
      <info>Provides the text value of the node if present</info>
      <return type='xmlChar *' info='the string or NULL if not available. The retsult must be deallocated with xmlFree()'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlTextReaderXmlLang' file='xmlreader'>
      <info>The xml:lang scope within which the node resides.</info>
      <return type='xmlChar *' info='the xml:lang value or NULL if none exists.'/>
      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
    </function>
    <function name='xmlUCSIsAlphabeticPresentationForms' file='xmlunicode'>
      <info>Check whether the character is part of AlphabeticPresentationForms UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsArabic' file='xmlunicode'>
      <info>Check whether the character is part of Arabic UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsArabicPresentationFormsA' file='xmlunicode'>
      <info>Check whether the character is part of ArabicPresentationForms-A UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsArabicPresentationFormsB' file='xmlunicode'>
      <info>Check whether the character is part of ArabicPresentationForms-B UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsArmenian' file='xmlunicode'>
      <info>Check whether the character is part of Armenian UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsArrows' file='xmlunicode'>
      <info>Check whether the character is part of Arrows UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBasicLatin' file='xmlunicode'>
      <info>Check whether the character is part of BasicLatin UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBengali' file='xmlunicode'>
      <info>Check whether the character is part of Bengali UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBlock' file='xmlunicode'>
      <info>Check whether the caracter is part of the UCS Block</info>
      <return type='int' info='1 if true, 0 if false and -1 on unknown block'/>
      <arg name='code' type='int' info='UCS code point'/>
      <arg name='block' type='const char *' info='UCS block name'/>
    </function>
    <function name='xmlUCSIsBlockElements' file='xmlunicode'>
      <info>Check whether the character is part of BlockElements UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBopomofo' file='xmlunicode'>
      <info>Check whether the character is part of Bopomofo UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBopomofoExtended' file='xmlunicode'>
      <info>Check whether the character is part of BopomofoExtended UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBoxDrawing' file='xmlunicode'>
      <info>Check whether the character is part of BoxDrawing UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsBraillePatterns' file='xmlunicode'>
      <info>Check whether the character is part of BraillePatterns UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsByzantineMusicalSymbols' file='xmlunicode'>
      <info>Check whether the character is part of ByzantineMusicalSymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKCompatibility' file='xmlunicode'>
      <info>Check whether the character is part of CJKCompatibility UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKCompatibilityForms' file='xmlunicode'>
      <info>Check whether the character is part of CJKCompatibilityForms UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKCompatibilityIdeographs' file='xmlunicode'>
      <info>Check whether the character is part of CJKCompatibilityIdeographs UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKCompatibilityIdeographsSupplement' file='xmlunicode'>
      <info>Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKRadicalsSupplement' file='xmlunicode'>
      <info>Check whether the character is part of CJKRadicalsSupplement UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKSymbolsandPunctuation' file='xmlunicode'>
      <info>Check whether the character is part of CJKSymbolsandPunctuation UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKUnifiedIdeographs' file='xmlunicode'>
      <info>Check whether the character is part of CJKUnifiedIdeographs UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKUnifiedIdeographsExtensionA' file='xmlunicode'>
      <info>Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCJKUnifiedIdeographsExtensionB' file='xmlunicode'>
      <info>Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCat' file='xmlunicode'>
      <info>Check whether the caracter is part of the UCS Category</info>
      <return type='int' info='1 if true, 0 if false and -1 on unknown category'/>
      <arg name='code' type='int' info='UCS code point'/>
      <arg name='cat' type='const char *' info='UCS Category name'/>
    </function>
    <function name='xmlUCSIsCatC' file='xmlunicode'>
      <info>Check whether the character is part of C UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatCc' file='xmlunicode'>
      <info>Check whether the character is part of Cc UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatCf' file='xmlunicode'>
      <info>Check whether the character is part of Cf UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatCo' file='xmlunicode'>
      <info>Check whether the character is part of Co UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatCs' file='xmlunicode'>
      <info>Check whether the character is part of Cs UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatL' file='xmlunicode'>
      <info>Check whether the character is part of L UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatLl' file='xmlunicode'>
      <info>Check whether the character is part of Ll UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatLm' file='xmlunicode'>
      <info>Check whether the character is part of Lm UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatLo' file='xmlunicode'>
      <info>Check whether the character is part of Lo UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatLt' file='xmlunicode'>
      <info>Check whether the character is part of Lt UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatLu' file='xmlunicode'>
      <info>Check whether the character is part of Lu UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatM' file='xmlunicode'>
      <info>Check whether the character is part of M UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatMc' file='xmlunicode'>
      <info>Check whether the character is part of Mc UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatMe' file='xmlunicode'>
      <info>Check whether the character is part of Me UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatMn' file='xmlunicode'>
      <info>Check whether the character is part of Mn UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatN' file='xmlunicode'>
      <info>Check whether the character is part of N UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatNd' file='xmlunicode'>
      <info>Check whether the character is part of Nd UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatNl' file='xmlunicode'>
      <info>Check whether the character is part of Nl UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatNo' file='xmlunicode'>
      <info>Check whether the character is part of No UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatP' file='xmlunicode'>
      <info>Check whether the character is part of P UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPc' file='xmlunicode'>
      <info>Check whether the character is part of Pc UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPd' file='xmlunicode'>
      <info>Check whether the character is part of Pd UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPe' file='xmlunicode'>
      <info>Check whether the character is part of Pe UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPf' file='xmlunicode'>
      <info>Check whether the character is part of Pf UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPi' file='xmlunicode'>
      <info>Check whether the character is part of Pi UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPo' file='xmlunicode'>
      <info>Check whether the character is part of Po UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatPs' file='xmlunicode'>
      <info>Check whether the character is part of Ps UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatS' file='xmlunicode'>
      <info>Check whether the character is part of S UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatSc' file='xmlunicode'>
      <info>Check whether the character is part of Sc UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatSk' file='xmlunicode'>
      <info>Check whether the character is part of Sk UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatSm' file='xmlunicode'>
      <info>Check whether the character is part of Sm UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatSo' file='xmlunicode'>
      <info>Check whether the character is part of So UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatZ' file='xmlunicode'>
      <info>Check whether the character is part of Z UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatZl' file='xmlunicode'>
      <info>Check whether the character is part of Zl UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatZp' file='xmlunicode'>
      <info>Check whether the character is part of Zp UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCatZs' file='xmlunicode'>
      <info>Check whether the character is part of Zs UCS Category</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCherokee' file='xmlunicode'>
      <info>Check whether the character is part of Cherokee UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCombiningDiacriticalMarks' file='xmlunicode'>
      <info>Check whether the character is part of CombiningDiacriticalMarks UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCombiningHalfMarks' file='xmlunicode'>
      <info>Check whether the character is part of CombiningHalfMarks UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCombiningMarksforSymbols' file='xmlunicode'>
      <info>Check whether the character is part of CombiningMarksforSymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsControlPictures' file='xmlunicode'>
      <info>Check whether the character is part of ControlPictures UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCurrencySymbols' file='xmlunicode'>
      <info>Check whether the character is part of CurrencySymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsCyrillic' file='xmlunicode'>
      <info>Check whether the character is part of Cyrillic UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsDeseret' file='xmlunicode'>
      <info>Check whether the character is part of Deseret UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsDevanagari' file='xmlunicode'>
      <info>Check whether the character is part of Devanagari UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsDingbats' file='xmlunicode'>
      <info>Check whether the character is part of Dingbats UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsEnclosedAlphanumerics' file='xmlunicode'>
      <info>Check whether the character is part of EnclosedAlphanumerics UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsEnclosedCJKLettersandMonths' file='xmlunicode'>
      <info>Check whether the character is part of EnclosedCJKLettersandMonths UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsEthiopic' file='xmlunicode'>
      <info>Check whether the character is part of Ethiopic UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGeneralPunctuation' file='xmlunicode'>
      <info>Check whether the character is part of GeneralPunctuation UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGeometricShapes' file='xmlunicode'>
      <info>Check whether the character is part of GeometricShapes UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGeorgian' file='xmlunicode'>
      <info>Check whether the character is part of Georgian UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGothic' file='xmlunicode'>
      <info>Check whether the character is part of Gothic UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGreek' file='xmlunicode'>
      <info>Check whether the character is part of Greek UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGreekExtended' file='xmlunicode'>
      <info>Check whether the character is part of GreekExtended UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGujarati' file='xmlunicode'>
      <info>Check whether the character is part of Gujarati UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsGurmukhi' file='xmlunicode'>
      <info>Check whether the character is part of Gurmukhi UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHalfwidthandFullwidthForms' file='xmlunicode'>
      <info>Check whether the character is part of HalfwidthandFullwidthForms UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHangulCompatibilityJamo' file='xmlunicode'>
      <info>Check whether the character is part of HangulCompatibilityJamo UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHangulJamo' file='xmlunicode'>
      <info>Check whether the character is part of HangulJamo UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHangulSyllables' file='xmlunicode'>
      <info>Check whether the character is part of HangulSyllables UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHebrew' file='xmlunicode'>
      <info>Check whether the character is part of Hebrew UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHighPrivateUseSurrogates' file='xmlunicode'>
      <info>Check whether the character is part of HighPrivateUseSurrogates UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHighSurrogates' file='xmlunicode'>
      <info>Check whether the character is part of HighSurrogates UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsHiragana' file='xmlunicode'>
      <info>Check whether the character is part of Hiragana UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsIPAExtensions' file='xmlunicode'>
      <info>Check whether the character is part of IPAExtensions UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsIdeographicDescriptionCharacters' file='xmlunicode'>
      <info>Check whether the character is part of IdeographicDescriptionCharacters UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsKanbun' file='xmlunicode'>
      <info>Check whether the character is part of Kanbun UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsKangxiRadicals' file='xmlunicode'>
      <info>Check whether the character is part of KangxiRadicals UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsKannada' file='xmlunicode'>
      <info>Check whether the character is part of Kannada UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsKatakana' file='xmlunicode'>
      <info>Check whether the character is part of Katakana UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsKhmer' file='xmlunicode'>
      <info>Check whether the character is part of Khmer UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLao' file='xmlunicode'>
      <info>Check whether the character is part of Lao UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLatin1Supplement' file='xmlunicode'>
      <info>Check whether the character is part of Latin-1Supplement UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLatinExtendedA' file='xmlunicode'>
      <info>Check whether the character is part of LatinExtended-A UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLatinExtendedAdditional' file='xmlunicode'>
      <info>Check whether the character is part of LatinExtendedAdditional UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLatinExtendedB' file='xmlunicode'>
      <info>Check whether the character is part of LatinExtended-B UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLetterlikeSymbols' file='xmlunicode'>
      <info>Check whether the character is part of LetterlikeSymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsLowSurrogates' file='xmlunicode'>
      <info>Check whether the character is part of LowSurrogates UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMalayalam' file='xmlunicode'>
      <info>Check whether the character is part of Malayalam UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMathematicalAlphanumericSymbols' file='xmlunicode'>
      <info>Check whether the character is part of MathematicalAlphanumericSymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMathematicalOperators' file='xmlunicode'>
      <info>Check whether the character is part of MathematicalOperators UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMiscellaneousSymbols' file='xmlunicode'>
      <info>Check whether the character is part of MiscellaneousSymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMiscellaneousTechnical' file='xmlunicode'>
      <info>Check whether the character is part of MiscellaneousTechnical UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMongolian' file='xmlunicode'>
      <info>Check whether the character is part of Mongolian UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMusicalSymbols' file='xmlunicode'>
      <info>Check whether the character is part of MusicalSymbols UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsMyanmar' file='xmlunicode'>
      <info>Check whether the character is part of Myanmar UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsNumberForms' file='xmlunicode'>
      <info>Check whether the character is part of NumberForms UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsOgham' file='xmlunicode'>
      <info>Check whether the character is part of Ogham UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsOldItalic' file='xmlunicode'>
      <info>Check whether the character is part of OldItalic UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsOpticalCharacterRecognition' file='xmlunicode'>
      <info>Check whether the character is part of OpticalCharacterRecognition UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsOriya' file='xmlunicode'>
      <info>Check whether the character is part of Oriya UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsPrivateUse' file='xmlunicode'>
      <info>Check whether the character is part of PrivateUse UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsRunic' file='xmlunicode'>
      <info>Check whether the character is part of Runic UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsSinhala' file='xmlunicode'>
      <info>Check whether the character is part of Sinhala UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsSmallFormVariants' file='xmlunicode'>
      <info>Check whether the character is part of SmallFormVariants UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsSpacingModifierLetters' file='xmlunicode'>
      <info>Check whether the character is part of SpacingModifierLetters UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsSpecials' file='xmlunicode'>
      <info>Check whether the character is part of Specials UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsSuperscriptsandSubscripts' file='xmlunicode'>
      <info>Check whether the character is part of SuperscriptsandSubscripts UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsSyriac' file='xmlunicode'>
      <info>Check whether the character is part of Syriac UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsTags' file='xmlunicode'>
      <info>Check whether the character is part of Tags UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsTamil' file='xmlunicode'>
      <info>Check whether the character is part of Tamil UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsTelugu' file='xmlunicode'>
      <info>Check whether the character is part of Telugu UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsThaana' file='xmlunicode'>
      <info>Check whether the character is part of Thaana UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsThai' file='xmlunicode'>
      <info>Check whether the character is part of Thai UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsTibetan' file='xmlunicode'>
      <info>Check whether the character is part of Tibetan UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsUnifiedCanadianAboriginalSyllabics' file='xmlunicode'>
      <info>Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsYiRadicals' file='xmlunicode'>
      <info>Check whether the character is part of YiRadicals UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlUCSIsYiSyllables' file='xmlunicode'>
      <info>Check whether the character is part of YiSyllables UCS Block</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='code' type='int' info='UCS code point'/>
    </function>
    <function name='xmlURIEscape' file='uri'>
      <info>Escaping routine, does not do validity checks ! It will try to escape the chars needing this, but this is heuristic based it&apos;s impossible to be sure.</info>
      <return type='xmlChar *' info='an copy of the string, but escaped  25 May 2001 Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly according to RFC2396. - Carl Douglas'/>
      <arg name='str' type='const xmlChar *' info='the string of the URI to escape'/>
    </function>
    <function name='xmlURIEscapeStr' file='uri'>
      <info>This routine escapes a string to hex, ignoring reserved characters (a-z) and the characters in the exception list.</info>
      <return type='xmlChar *' info='a new escaped string or NULL in case of error.'/>
      <arg name='str' type='const xmlChar *' info='string to escape'/>
      <arg name='list' type='const xmlChar *' info='exception list string of chars not to escape'/>
    </function>
    <function name='xmlURIUnescapeString' file='uri'>
      <info>Unescaping routine, does not do validity checks ! Output is direct unsigned char translation of %XX values (no encoding)</info>
      <return type='char *' info='an copy of the string, but unescaped'/>
      <arg name='str' type='const char *' info='the string to unescape'/>
      <arg name='len' type='int' info='the length in bytes to unescape (or &lt;= 0 to indicate full string)'/>
      <arg name='target' type='char *' info='optional destination buffer'/>
    </function>
    <function name='xmlUTF8Strlen' file='encoding'>
      <info>compute the length of an UTF8 string, it doesn&apos;t do a full UTF8 checking of the content of the string.</info>
      <return type='int' info='the number of characters in the string or -1 in case of error'/>
      <arg name='utf' type='const xmlChar *' info='a sequence of UTF-8 encoded bytes'/>
    </function>
    <function name='xmlUTF8Strloc' file='encoding'>
      <info>a function to provide relative location of a UTF8 char</info>
      <return type='int' info='the relative character position of the desired char or -1 if not found'/>
      <arg name='utf' type='const xmlChar *' info='the input UTF8 *'/>
      <arg name='utfchar' type='const xmlChar *' info='the UTF8 character to be found'/>
    </function>
    <function name='xmlUTF8Strndup' file='encoding'>
      <info>a strndup for array of UTF8&apos;s</info>
      <return type='xmlChar *' info='a new UTF8 * or NULL'/>
      <arg name='utf' type='const xmlChar *' info='the input UTF8 *'/>
      <arg name='len' type='int' info='the len of @utf (in chars)'/>
    </function>
    <function name='xmlUTF8Strpos' file='encoding'>
      <info>a function to provide the equivalent of fetching a character from a string array</info>
      <return type='xmlChar *' info='a pointer to the UTF8 character or NULL'/>
      <arg name='utf' type='const xmlChar *' info='the input UTF8 *'/>
      <arg name='pos' type='int' info='the position of the desired UTF8 char (in chars)'/>
    </function>
    <function name='xmlUTF8Strsize' file='encoding'>
      <info>storage size of an UTF8 string</info>
      <return type='int' info='the storage size of the first &apos;len&apos; characters of ARRAY'/>
      <arg name='utf' type='const xmlChar *' info='a sequence of UTF-8 encoded bytes'/>
      <arg name='len' type='int' info='the number of characters in the array'/>
    </function>
    <function name='xmlUTF8Strsub' file='encoding'>
      <info>Note:  positions are given in units of UTF-8 chars</info>
      <return type='xmlChar *' info='a pointer to a newly created string or NULL if any problem'/>
      <arg name='utf' type='const xmlChar *' info='a sequence of UTF-8 encoded bytes'/>
      <arg name='start' type='int' info='relative pos of first char'/>
      <arg name='len' type='int' info='total number to copy'/>
    </function>
    <function name='xmlUnlinkNode' file='tree'>
      <info>Unlink a node from it&apos;s current context, the node is not freed</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlUnlockLibrary' file='threads'>
      <info>xmlUnlockLibrary() is used to release a re-entrant lock on the libxml2 library.</info>
      <return type='void'/>
    </function>
    <function name='xmlUnsetNsProp' file='tree'>
      <info>Remove an attribute carried by a node.</info>
      <return type='int' info='0 if successful, -1 if not found'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='ns' type='xmlNsPtr' info='the namespace definition'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
    </function>
    <function name='xmlUnsetProp' file='tree'>
      <info>Remove an attribute carried by a node.</info>
      <return type='int' info='0 if successful, -1 if not found'/>
      <arg name='node' type='xmlNodePtr' info='the node'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
    </function>
    <function name='xmlValidBuildContentModel' file='valid'>
      <info>(Re)Build the automata associated to the content model of this element</info>
      <return type='int' info='1 in case of success, 0 in case of error'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='a validation context'/>
      <arg name='elem' type='xmlElementPtr' info='an element declaration node'/>
    </function>
    <function name='xmlValidCtxtNormalizeAttributeValue' file='valid'>
      <info>Does the validation related extra step of the normalization of attribute values:  If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by single space (#x20) character.  Also  check VC: Standalone Document Declaration in P32, and update ctxt-&gt;valid accordingly</info>
      <return type='xmlChar *' info='a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context or NULL'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='elem' type='xmlNodePtr' info='the parent'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='value' type='const xmlChar *' info='the attribute value'/>
    </function>
    <function name='xmlValidGetPotentialChildren' file='valid'>
      <info>Build/extend a list of  potential children allowed by the content tree</info>
      <return type='int' info='the number of element in the list, or -1 in case of error.'/>
      <arg name='ctree' type='xmlElementContent *' info='an element content tree'/>
      <arg name='list' type='const xmlChar **' info='an array to store the list of child names'/>
      <arg name='len' type='int *' info='a pointer to the number of element in the list'/>
      <arg name='max' type='int' info='the size of the array'/>
    </function>
    <function name='xmlValidGetValidElements' file='valid'>
      <info>This function returns the list of authorized children to insert within an existing tree while respecting the validity constraints forced by the Dtd. The insertion point is defined using @prev and @next in the following ways: to insert before &apos;node&apos;: xmlValidGetValidElements(node-&gt;prev, node, ... to insert next &apos;node&apos;: xmlValidGetValidElements(node, node-&gt;next, ... to replace &apos;node&apos;: xmlValidGetValidElements(node-&gt;prev, node-&gt;next, ... to prepend a child to &apos;node&apos;: xmlValidGetValidElements(NULL, node-&gt;childs, to append a child to &apos;node&apos;: xmlValidGetValidElements(node-&gt;last, NULL, ...  pointers to the element names are inserted at the beginning of the array and do not need to be freed.</info>
      <return type='int' info='the number of element in the list, or -1 in case of error. If the function returns the value @max the caller is invited to grow the receiving array and retry.'/>
      <arg name='prev' type='xmlNode *' info='an element to insert after'/>
      <arg name='next' type='xmlNode *' info='an element to insert next'/>
      <arg name='list' type='const xmlChar **' info='an array to store the list of child names'/>
      <arg name='max' type='int' info='the size of the array'/>
    </function>
    <function name='xmlValidNormalizeAttributeValue' file='valid'>
      <info>Does the validation related extra step of the normalization of attribute values:  If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by single space (#x20) character.</info>
      <return type='xmlChar *' info='a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='elem' type='xmlNodePtr' info='the parent'/>
      <arg name='name' type='const xmlChar *' info='the attribute name'/>
      <arg name='value' type='const xmlChar *' info='the attribute value'/>
    </function>
    <function name='xmlValidateAttributeDecl' file='valid'>
      <info>Try to validate a single attribute definition basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Default Legal ] - [ VC: Enumeration ] - [ VC: ID Attribute Default ]  The ID/IDREF uniqueness and matching are done separately</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='attr' type='xmlAttributePtr' info='an attribute definition'/>
    </function>
    <function name='xmlValidateAttributeValue' file='valid'>
      <info>Validate that the given attribute value match  the proper production  [ VC: ID ] Values of type ID must match the Name production....  [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names ...  [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names ...  [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='type' type='xmlAttributeType' info='an attribute type'/>
      <arg name='value' type='const xmlChar *' info='an attribute value'/>
    </function>
    <function name='xmlValidateDocument' file='valid'>
      <info>Try to validate the document instance  basically it does the all the checks described by the XML Rec i.e. validates the internal and external subset (if present) and validate the document tree.</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
    </function>
    <function name='xmlValidateDocumentFinal' file='valid'>
      <info>Does the final step for the document validation once all the incremental validation steps have been completed  basically it does the following checks described by the XML Rec</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
    </function>
    <function name='xmlValidateDtd' file='valid'>
      <info>Try to validate the document against the dtd instance  basically it does check all the definitions in the DtD.</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='dtd' type='xmlDtdPtr' info='a dtd instance'/>
    </function>
    <function name='xmlValidateDtdFinal' file='valid'>
      <info>Does the final step for the dtds validation once all the subsets have been parsed  basically it does the following checks described by the XML Rec - check that ENTITY and ENTITIES type attributes default or possible values matches one of the defined entities. - check that NOTATION type attributes default or possible values matches one of the defined notations.</info>
      <return type='int' info='1 if valid or 0 if invalid and -1 if not well-formed'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
    </function>
    <function name='xmlValidateElement' file='valid'>
      <info>Try to validate the subtree under an element</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
    </function>
    <function name='xmlValidateElementDecl' file='valid'>
      <info>Try to validate a single element definition basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: One ID per Element Type ] - [ VC: No Duplicate Types ] - [ VC: Unique Element Type Declaration ]</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlElementPtr' info='an element definition'/>
    </function>
    <function name='xmlValidateNameValue' file='valid'>
      <info>Validate that the given value match Name production</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='value' type='const xmlChar *' info='an Name value'/>
    </function>
    <function name='xmlValidateNamesValue' file='valid'>
      <info>Validate that the given value match Names production</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='value' type='const xmlChar *' info='an Names value'/>
    </function>
    <function name='xmlValidateNmtokenValue' file='valid'>
      <info>Validate that the given value match Nmtoken production  [ VC: Name Token ]</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='value' type='const xmlChar *' info='an Nmtoken value'/>
    </function>
    <function name='xmlValidateNmtokensValue' file='valid'>
      <info>Validate that the given value match Nmtokens production  [ VC: Name Token ]</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='value' type='const xmlChar *' info='an Nmtokens value'/>
    </function>
    <function name='xmlValidateNotationDecl' file='valid'>
      <info>Try to validate a single notation definition basically it does the following checks as described by the XML-1.0 recommendation: - it seems that no validity constraint exists on notation declarations But this function get called anyway ...</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='nota' type='xmlNotationPtr' info='a notation definition'/>
    </function>
    <function name='xmlValidateNotationUse' file='valid'>
      <info>Validate that the given name match a notation declaration. - [ VC: Notation Declared ]</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='the document'/>
      <arg name='notationName' type='const xmlChar *' info='the notation name to check'/>
    </function>
    <function name='xmlValidateOneAttribute' file='valid'>
      <info>Try to validate a single attribute for an element basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Value Type ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity Name ] - [ VC: Notation Attributes ]  The ID/IDREF uniqueness and matching are done separately</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
      <arg name='attr' type='xmlAttrPtr' info='an attribute instance'/>
      <arg name='value' type='const xmlChar *' info='the attribute value (without entities processing)'/>
    </function>
    <function name='xmlValidateOneElement' file='valid'>
      <info>Try to validate a single element and it&apos;s attributes, basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Element Valid ] - [ VC: Required Attribute ] Then call xmlValidateOneAttribute() for each attribute present.  The ID/IDREF checkings are done separately</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
    </function>
    <function name='xmlValidateOneNamespace' file='valid'>
      <info>Try to validate a single namespace declaration for an element basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Value Type ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity Name ] - [ VC: Notation Attributes ]  The ID/IDREF uniqueness and matching are done separately</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
      <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
      <arg name='ns' type='xmlNsPtr' info='an namespace declaration instance'/>
      <arg name='value' type='const xmlChar *' info='the attribute value (without entities processing)'/>
    </function>
    <function name='xmlValidatePopElement' file='valid'>
      <info>Pop the element end from the validation stack.</info>
      <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
      <arg name='qname' type='const xmlChar *' info='the qualified name as appearing in the serialization'/>
    </function>
    <function name='xmlValidatePushCData' file='valid'>
      <info>check the CData parsed for validation in the current stack</info>
      <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='data' type='const xmlChar *' info='some character data read'/>
      <arg name='len' type='int' info='the lenght of the data'/>
    </function>
    <function name='xmlValidatePushElement' file='valid'>
      <info>Push a new element start on the validation stack.</info>
      <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
      <arg name='qname' type='const xmlChar *' info='the qualified name as appearing in the serialization'/>
    </function>
    <function name='xmlValidateRoot' file='valid'>
      <info>Try to validate a the root element basically it does the following check as described by the XML-1.0 recommendation: - [ VC: Root Element Type ] it doesn&apos;t try to recurse or apply other check to the element</info>
      <return type='int' info='1 if valid or 0 otherwise'/>
      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
    </function>
    <functype name='xmlValidityErrorFunc' file='valid'>
      <info>Callback called when a validity error is found. This is a message oriented function similar to an *printf function.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an xmlValidCtxtPtr validity error context'/>
      <arg name='msg' type='const char *' info='the string to format *printf like vararg'/>
      <arg name='...' type='...' info='remaining arguments to the format'/>
    </functype>
    <functype name='xmlValidityWarningFunc' file='valid'>
      <info>Callback called when a validity warning is found. This is a message oriented function similar to an *printf function.</info>
      <return type='void'/>
      <arg name='ctx' type='void *' info='an xmlValidCtxtPtr validity error context'/>
      <arg name='msg' type='const char *' info='the string to format *printf like vararg'/>
      <arg name='...' type='...' info='remaining arguments to the format'/>
    </functype>
    <function name='xmlXIncludeProcess' file='xinclude'>
      <info>Implement the XInclude substitution on the XML document @doc</info>
      <return type='int' info='0 if no substitution were done, -1 if some processing failed or the number of substitutions done.'/>
      <arg name='doc' type='xmlDocPtr' info='an XML document'/>
    </function>
    <function name='xmlXPathAddValues' file='xpathInternals'>
      <info>Implement the add operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <functype name='xmlXPathAxisFunc' file='xpath'>
      <info>An axis traversal function. To traverse an axis, the engine calls the first time with cur == NULL and repeat until the function returns NULL indicating the end of the axis traversal.</info>
      <return type='xmlXPathObjectPtr' info='the next node in that axis or NULL if at the end of the axis.'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath interpreter context'/>
      <arg name='cur' type='xmlXPathObjectPtr' info='the previous node being explored on that axis'/>
    </functype>
    <function name='xmlXPathBooleanFunction' file='xpathInternals'>
      <info>Implement the boolean() XPath function boolean boolean(object) he boolean function converts its argument to a boolean as follows: - a number is true if and only if it is neither positive or negative zero nor NaN - a node-set is true if and only if it is non-empty - a string is true if and only if its length is non-zero</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathCastBooleanToNumber' file='xpath'>
      <info>Converts a boolean to its number value</info>
      <return type='double' info='the number value'/>
      <arg name='val' type='int' info='a boolean'/>
    </function>
    <function name='xmlXPathCastBooleanToString' file='xpath'>
      <info>Converts a boolean to its string value.</info>
      <return type='xmlChar *' info='a newly allocated string.'/>
      <arg name='val' type='int' info='a boolean'/>
    </function>
    <function name='xmlXPathCastNodeSetToBoolean' file='xpath'>
      <info>Converts a node-set to its boolean value</info>
      <return type='int' info='the boolean value'/>
      <arg name='ns' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathCastNodeSetToNumber' file='xpath'>
      <info>Converts a node-set to its number value</info>
      <return type='double' info='the number value'/>
      <arg name='ns' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathCastNodeSetToString' file='xpath'>
      <info>Converts a node-set to its string value.</info>
      <return type='xmlChar *' info='a newly allocated string.'/>
      <arg name='ns' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathCastNodeToNumber' file='xpath'>
      <info>Converts a node to its number value</info>
      <return type='double' info='the number value'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlXPathCastNodeToString' file='xpath'>
      <info>Converts a node to its string value.</info>
      <return type='xmlChar *' info='a newly allocated string.'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlXPathCastNumberToBoolean' file='xpath'>
      <info>Converts a number to its boolean value</info>
      <return type='int' info='the boolean value'/>
      <arg name='val' type='double' info='a number'/>
    </function>
    <function name='xmlXPathCastNumberToString' file='xpath'>
      <info>Converts a number to its string value.</info>
      <return type='xmlChar *' info='a newly allocated string.'/>
      <arg name='val' type='double' info='a number'/>
    </function>
    <function name='xmlXPathCastStringToBoolean' file='xpath'>
      <info>Converts a string to its boolean value</info>
      <return type='int' info='the boolean value'/>
      <arg name='val' type='const xmlChar *' info='a string'/>
    </function>
    <function name='xmlXPathCastStringToNumber' file='xpath'>
      <info>Converts a string to its number value</info>
      <return type='double' info='the number value'/>
      <arg name='val' type='const xmlChar *' info='a string'/>
    </function>
    <function name='xmlXPathCastToBoolean' file='xpath'>
      <info>Converts an XPath object to its boolean value</info>
      <return type='int' info='the boolean value'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathCastToNumber' file='xpath'>
      <info>Converts an XPath object to its number value</info>
      <return type='double' info='the number value'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathCastToString' file='xpath'>
      <info>Converts an existing object to its string() equivalent</info>
      <return type='xmlChar *' info='the string value of the object, NULL in case of error. A new string is allocated only if needed (@val isn&apos;t a string object).'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathCeilingFunction' file='xpathInternals'>
      <info>Implement the ceiling() XPath function number ceiling(number) The ceiling function returns the smallest (closest to negative infinity) number that is not less than the argument and that is an integer.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathCmpNodes' file='xpath'>
      <info>Compare two nodes w.r.t document order</info>
      <return type='int' info='-2 in case of error 1 if first point &lt; second point, 0 if that&apos;s the same node, -1 otherwise'/>
      <arg name='node1' type='xmlNodePtr' info='the first node'/>
      <arg name='node2' type='xmlNodePtr' info='the second node'/>
    </function>
    <function name='xmlXPathCompareValues' file='xpathInternals'>
      <info>Implement the compare operation on XPath objects: @arg1 &lt; @arg2    (1, 1, ... @arg1 &lt;= @arg2   (1, 0, ... @arg1 &gt; @arg2    (0, 1, ... @arg1 &gt;= @arg2   (0, 0, ...  When neither object to be compared is a node-set and the operator is &lt;=, &lt;, &gt;=, &gt;, then the objects are compared by converted both objects to numbers and comparing the numbers according to IEEE 754. The &lt; comparison will be true if and only if the first number is less than the second number. The &lt;= comparison will be true if and only if the first number is less than or equal to the second number. The &gt; comparison will be true if and only if the first number is greater than the second number. The &gt;= comparison will be true if and only if the first number is greater than or equal to the second number.</info>
      <return type='int' info='1 if the comparison succeeded, 0 if it failed'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='inf' type='int' info='less than (1) or greater than (0)'/>
      <arg name='strict' type='int' info='is the comparison strict'/>
    </function>
    <function name='xmlXPathCompile' file='xpath'>
      <info>Compile an XPath expression</info>
      <return type='xmlXPathCompExprPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
    </function>
    <function name='xmlXPathCompiledEval' file='xpath'>
      <info>Evaluate the Precompiled XPath expression in the given context.</info>
      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='comp' type='xmlXPathCompExprPtr' info='the compiled XPath expression'/>
      <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathConcatFunction' file='xpathInternals'>
      <info>Implement the concat() XPath function string concat(string, string, string*) The concat function returns the concatenation of its arguments.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathContainsFunction' file='xpathInternals'>
      <info>Implement the contains() XPath function boolean contains(string, string) The contains function returns true if the first argument string contains the second argument string, and otherwise returns false.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathConvertBoolean' file='xpath'>
      <info>Converts an existing object to its boolean() equivalent</info>
      <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <functype name='xmlXPathConvertFunc' file='xpath'>
      <info>A conversion function is associated to a type and used to cast the new type to primitive values.</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='an XPath object'/>
      <arg name='type' type='int' info='the number of the target type'/>
    </functype>
    <function name='xmlXPathConvertNumber' file='xpath'>
      <info>Converts an existing object to its number() equivalent</info>
      <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathConvertString' file='xpath'>
      <info>Converts an existing object to its string() equivalent</info>
      <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
    </function>
    <function name='xmlXPathCountFunction' file='xpathInternals'>
      <info>Implement the count() XPath function number count(node-set)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathDebugDumpCompExpr' file='xpathInternals'>
      <info>Dumps the tree of the compiled XPath expression.</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * for the output'/>
      <arg name='comp' type='xmlXPathCompExprPtr' info='the precompiled XPath expression'/>
      <arg name='depth' type='int' info='the indentation level.'/>
    </function>
    <function name='xmlXPathDebugDumpObject' file='xpathInternals'>
      <info>Dump the content of the object for debugging purposes</info>
      <return type='void'/>
      <arg name='output' type='FILE *' info='the FILE * to dump the output'/>
      <arg name='cur' type='xmlXPathObjectPtr' info='the object to inspect'/>
      <arg name='depth' type='int' info='indentation level'/>
    </function>
    <function name='xmlXPathDifference' file='xpathInternals'>
      <info>Implements the EXSLT - Sets difference() function: node-set set:difference (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the difference between the two node sets, or nodes1 if nodes2 is empty'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathDistinct' file='xpathInternals'>
      <info>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set) @nodes is sorted by document order, then #exslSetsDistinctSorted is called with the sorted node-set</info>
      <return type='xmlNodeSetPtr' info='a subset of the nodes contained in @nodes, or @nodes if it is empty'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathDistinctSorted' file='xpathInternals'>
      <info>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set)</info>
      <return type='xmlNodeSetPtr' info='a subset of the nodes contained in @nodes, or @nodes if it is empty'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
    </function>
    <function name='xmlXPathDivValues' file='xpathInternals'>
      <info>Implement the div operation on XPath objects @arg1 / @arg2: The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathEqualValues' file='xpathInternals'>
      <info>Implement the equal operation on XPath objects content: @arg1 == @arg2</info>
      <return type='int' info='0 or 1 depending on the results of the test.'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathEval' file='xpath'>
      <info>Evaluate the XPath Location Path in the given context.</info>
      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
      <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathEvalExpr' file='xpathInternals'>
      <info>Parse and evaluate an XPath expression in the given context, then push the result on the context stack</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathEvalExpression' file='xpath'>
      <info>Evaluate the XPath expression in the given context.</info>
      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <functype name='xmlXPathEvalFunc' file='xpath'>
      <info>An XPath evaluation function, the parameters are on the XPath context stack.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
      <arg name='nargs' type='int' info='the number of arguments passed to the function'/>
    </functype>
    <function name='xmlXPathEvalPredicate' file='xpath'>
      <info>Evaluate a predicate result for the current node. A PredicateExpr is evaluated by evaluating the Expr and converting the result to a boolean. If the result is a number, the result will be converted to true if the number is equal to the position of the context node in the context node list (as returned by the position function) and will be converted to false otherwise; if the result is not a number, then the result will be converted as if by a call to the boolean function.</info>
      <return type='int' info='1 if predicate is true, 0 otherwise'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='res' type='xmlXPathObjectPtr' info='the Predicate Expression evaluation result'/>
    </function>
    <function name='xmlXPathEvaluatePredicateResult' file='xpathInternals'>
      <info>Evaluate a predicate result for the current node. A PredicateExpr is evaluated by evaluating the Expr and converting the result to a boolean. If the result is a number, the result will be converted to true if the number is equal to the position of the context node in the context node list (as returned by the position function) and will be converted to false otherwise; if the result is not a number, then the result will be converted as if by a call to the boolean function.</info>
      <return type='int' info='1 if predicate is true, 0 otherwise'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='res' type='xmlXPathObjectPtr' info='the Predicate Expression evaluation result'/>
    </function>
    <function name='xmlXPathFalseFunction' file='xpathInternals'>
      <info>Implement the false() XPath function boolean false()</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathFloorFunction' file='xpathInternals'>
      <info>Implement the floor() XPath function number floor(number) The floor function returns the largest (closest to positive infinity) number that is not greater than the argument and that is an integer.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathFreeCompExpr' file='xpath'>
      <info>Free up the memory allocated by @comp</info>
      <return type='void'/>
      <arg name='comp' type='xmlXPathCompExprPtr' info='an XPATH comp'/>
    </function>
    <function name='xmlXPathFreeContext' file='xpath'>
      <info>Free up an xmlXPathContext</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the context to free'/>
    </function>
    <function name='xmlXPathFreeNodeSet' file='xpath'>
      <info>Free the NodeSet compound (not the actual nodes !).</info>
      <return type='void'/>
      <arg name='obj' type='xmlNodeSetPtr' info='the xmlNodeSetPtr to free'/>
    </function>
    <function name='xmlXPathFreeNodeSetList' file='xpath'>
      <info>Free up the xmlXPathObjectPtr @obj but don&apos;t deallocate the objects in the list contrary to xmlXPathFreeObject().</info>
      <return type='void'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='an existing NodeSetList object'/>
    </function>
    <function name='xmlXPathFreeObject' file='xpath'>
      <info>Free up an xmlXPathObjectPtr object.</info>
      <return type='void'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='the object to free'/>
    </function>
    <function name='xmlXPathFreeParserContext' file='xpathInternals'>
      <info>Free up an xmlXPathParserContext</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the context to free'/>
    </function>
    <functype name='xmlXPathFuncLookupFunc' file='xpathInternals'>
      <info>Prototype for callbacks used to plug function lookup in the XPath engine.</info>
      <return type='xmlXPathFunction' info='the XPath function or NULL if not found.'/>
      <arg name='ctxt' type='void *' info='an XPath context'/>
      <arg name='name' type='const xmlChar *' info='name of the function'/>
      <arg name='ns_uri' type='const xmlChar *' info='the namespace name hosting this function'/>
    </functype>
    <functype name='xmlXPathFunction' file='xpath'>
      <info>An XPath function. The arguments (if any) are popped out from the context stack and the result is pushed on the stack.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath interprestation context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </functype>
    <function name='xmlXPathFunctionLookup' file='xpathInternals'>
      <info>Search in the Function array of the context for the given function.</info>
      <return type='xmlXPathFunction' info='the xmlXPathFunction or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the function name'/>
    </function>
    <function name='xmlXPathFunctionLookupNS' file='xpathInternals'>
      <info>Search in the Function array of the context for the given function.</info>
      <return type='xmlXPathFunction' info='the xmlXPathFunction or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the function name'/>
      <arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
    </function>
    <function name='xmlXPathHasSameNodes' file='xpathInternals'>
      <info>Implements the EXSLT - Sets has-same-nodes function: boolean set:has-same-node(node-set, node-set)</info>
      <return type='int' info='true (1) if @nodes1 shares any node with @nodes2, false (0) otherwise'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathIdFunction' file='xpathInternals'>
      <info>Implement the id() XPath function node-set id(object) The id function selects elements by their unique ID (see [5.2.1 Unique IDs]). When the argument to id is of type node-set, then the result is the union of the result of applying id to the string value of each of the nodes in the argument node-set. When the argument to id is of any other type, the argument is converted to a string as if by a call to the string function; the string is split into a whitespace-separated list of tokens (whitespace is any sequence of characters matching the production S); the result is a node-set containing the elements in the same document as the context node that have a unique ID equal to any of the tokens in the list.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathInit' file='xpath'>
      <info>Initialize the XPath environment</info>
      <return type='void'/>
    </function>
    <function name='xmlXPathIntersection' file='xpathInternals'>
      <info>Implements the EXSLT - Sets intersection() function: node-set set:intersection (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='a node set comprising the nodes that are within both the node sets passed as arguments'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathIsInf' file='xpath'>
      <info>Provides a portable isinf() function to detect whether a double is a +Infinite or -Infinite. Based on trio code http://sourceforge.net/projects/ctrio/</info>
      <return type='int' info='1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise'/>
      <arg name='val' type='double' info='a double value'/>
    </function>
    <function name='xmlXPathIsNaN' file='xpath'>
      <info>Provides a portable isnan() function to detect whether a double is a NotaNumber. Based on trio code http://sourceforge.net/projects/ctrio/</info>
      <return type='int' info='1 if the value is a NaN, 0 otherwise'/>
      <arg name='val' type='double' info='a double value'/>
    </function>
    <function name='xmlXPathIsNodeType' file='xpathInternals'>
      <info>Is the name given a NodeType one.  [38]   NodeType ::=   &apos;comment&apos; | &apos;text&apos; | &apos;processing-instruction&apos; | &apos;node&apos;</info>
      <return type='int' info='1 if true 0 otherwise'/>
      <arg name='name' type='const xmlChar *' info='a name string'/>
    </function>
    <function name='xmlXPathLangFunction' file='xpathInternals'>
      <info>Implement the lang() XPath function boolean lang(string) The lang function returns true or false depending on whether the language of the context node as specified by xml:lang attributes is the same as or is a sublanguage of the language specified by the argument string. The language of the context node is determined by the value of the xml:lang attribute on the context node, or, if the context node has no xml:lang attribute, by the value of the xml:lang attribute on the nearest ancestor of the context node that has an xml:lang attribute. If there is no such attribute, then lang</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathLastFunction' file='xpathInternals'>
      <info>Implement the last() XPath function number last() The last function returns the number of nodes in the context node list.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathLeading' file='xpathInternals'>
      <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes1 and @nodes2 are sorted by document order, then #exslSetsLeadingSorted is called.</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that precede the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathLeadingSorted' file='xpathInternals'>
      <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that precede the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
    </function>
    <function name='xmlXPathLocalNameFunction' file='xpathInternals'>
      <info>Implement the local-name() XPath function string local-name(node-set?) The local-name function returns a string containing the local part of the name of the node in the argument node-set that is first in document order. If the node-set is empty or the first node has no name, an empty string is returned. If the argument is omitted it defaults to the context node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathModValues' file='xpathInternals'>
      <info>Implement the mod operation on XPath objects: @arg1 / @arg2 The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathMultValues' file='xpathInternals'>
      <info>Implement the multiply operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathNamespaceURIFunction' file='xpathInternals'>
      <info>Implement the namespace-uri() XPath function string namespace-uri(node-set?) The namespace-uri function returns a string containing the namespace URI of the expanded name of the node in the argument node-set that is first in document order. If the node-set is empty, the first node has no name, or the expanded name has no namespace URI, an empty string is returned. If the argument is omitted it defaults to the context node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathNewBoolean' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type boolean and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='int' info='the boolean value'/>
    </function>
    <function name='xmlXPathNewCString' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type string and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='const char *' info='the char * value'/>
    </function>
    <function name='xmlXPathNewContext' file='xpath'>
      <info>Create a new xmlXPathContext</info>
      <return type='xmlXPathContextPtr' info='the xmlXPathContext just allocated. The caller will need to free it.'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document'/>
    </function>
    <function name='xmlXPathNewFloat' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type double and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='double' info='the double value'/>
    </function>
    <function name='xmlXPathNewNodeSet' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type NodeSet and initialize it with the single Node @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodePtr' info='the NodePtr value'/>
    </function>
    <function name='xmlXPathNewNodeSetList' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type NodeSet and initialize it with the Nodeset @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodeSetPtr' info='an existing NodeSet'/>
    </function>
    <function name='xmlXPathNewParserContext' file='xpathInternals'>
      <info>Create a new xmlXPathParserContext</info>
      <return type='xmlXPathParserContextPtr' info='the xmlXPathParserContext just allocated.'/>
      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathNewString' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type string and of value @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='const xmlChar *' info='the xmlChar * value'/>
    </function>
    <function name='xmlXPathNewValueTree' file='xpathInternals'>
      <info>Create a new xmlXPathObjectPtr of type Value Tree (XSLT) and initialize it with the tree root @val</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodePtr' info='the NodePtr value'/>
    </function>
    <function name='xmlXPathNextAncestor' file='xpathInternals'>
      <info>Traversal function for the &quot;ancestor&quot; direction the ancestor axis contains the ancestors of the context node; the ancestors of the context node consist of the parent of context node and the parent&apos;s parent and so on; the nodes are ordered in reverse document order; thus the parent is the first node on the axis, and the parent&apos;s parent is the second node on the axis</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextAncestorOrSelf' file='xpathInternals'>
      <info>Traversal function for the &quot;ancestor-or-self&quot; direction he ancestor-or-self axis contains the context node and ancestors of the context node in reverse document order; thus the context node is the first node on the axis, and the context node&apos;s parent the second; parent here is defined the same as with the parent axis.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextAttribute' file='xpathInternals'>
      <info>Traversal function for the &quot;attribute&quot; direction TODO: support DTD inherited default attributes</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current attribute in the traversal'/>
    </function>
    <function name='xmlXPathNextChild' file='xpathInternals'>
      <info>Traversal function for the &quot;child&quot; direction The child axis contains the children of the context node in document order.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextDescendant' file='xpathInternals'>
      <info>Traversal function for the &quot;descendant&quot; direction the descendant axis contains the descendants of the context node in document order; a descendant is a child or a child of a child and so on.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextDescendantOrSelf' file='xpathInternals'>
      <info>Traversal function for the &quot;descendant-or-self&quot; direction the descendant-or-self axis contains the context node and the descendants of the context node in document order; thus the context node is the first node on the axis, and the first child of the context node is the second node on the axis</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextFollowing' file='xpathInternals'>
      <info>Traversal function for the &quot;following&quot; direction The following axis contains all nodes in the same document as the context node that are after the context node in document order, excluding any descendants and excluding attribute nodes and namespace nodes; the nodes are ordered in document order</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextFollowingSibling' file='xpathInternals'>
      <info>Traversal function for the &quot;following-sibling&quot; direction The following-sibling axis contains the following siblings of the context node in document order.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextNamespace' file='xpathInternals'>
      <info>Traversal function for the &quot;namespace&quot; direction the namespace axis contains the namespace nodes of the context node; the order of nodes on this axis is implementation-defined; the axis will be empty unless the context node is an element  We keep the XML namespace node at the end of the list.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current attribute in the traversal'/>
    </function>
    <function name='xmlXPathNextParent' file='xpathInternals'>
      <info>Traversal function for the &quot;parent&quot; direction The parent axis contains the parent of the context node, if there is one.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextPreceding' file='xpathInternals'>
      <info>Traversal function for the &quot;preceding&quot; direction the preceding axis contains all nodes in the same document as the context node that are before the context node in document order, excluding any ancestors and excluding attribute nodes and namespace nodes; the nodes are ordered in reverse document order</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextPrecedingSibling' file='xpathInternals'>
      <info>Traversal function for the &quot;preceding-sibling&quot; direction The preceding-sibling axis contains the preceding siblings of the context node in reverse document order; the first preceding sibling is first on the axis; the sibling preceding that node is the second on the axis and so on.</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNextSelf' file='xpathInternals'>
      <info>Traversal function for the &quot;self&quot; direction The self axis contains just the context node itself</info>
      <return type='xmlNodePtr' info='the next element following that axis'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
    </function>
    <function name='xmlXPathNodeLeading' file='xpathInternals'>
      <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes is sorted by document order, then #exslSetsNodeLeadingSorted is called.</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlXPathNodeLeadingSorted' file='xpathInternals'>
      <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlXPathNodeSetAdd' file='xpathInternals'>
      <info>add a new xmlNodePtr to an existing NodeSet</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
      <arg name='val' type='xmlNodePtr' info='a new xmlNodePtr'/>
    </function>
    <function name='xmlXPathNodeSetAddNs' file='xpathInternals'>
      <info>add a new namespace node to an existing NodeSet</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
      <arg name='node' type='xmlNodePtr' info='the hosting node'/>
      <arg name='ns' type='xmlNsPtr' info='a the namespace node'/>
    </function>
    <function name='xmlXPathNodeSetAddUnique' file='xpathInternals'>
      <info>add a new xmlNodePtr to an existing NodeSet, optimized version when we are sure the node is not already in the set.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
      <arg name='val' type='xmlNodePtr' info='a new xmlNodePtr'/>
    </function>
    <function name='xmlXPathNodeSetContains' file='xpathInternals'>
      <info>checks whether @cur contains @val</info>
      <return type='int' info='true (1) if @cur contains @val, false (0) otherwise'/>
      <arg name='cur' type='xmlNodeSetPtr' info='the node-set'/>
      <arg name='val' type='xmlNodePtr' info='the node'/>
    </function>
    <function name='xmlXPathNodeSetCreate' file='xpath'>
      <info>Create a new xmlNodeSetPtr of type double and of value @val</info>
      <return type='xmlNodeSetPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodePtr' info='an initial xmlNodePtr, or NULL'/>
    </function>
    <function name='xmlXPathNodeSetDel' file='xpathInternals'>
      <info>Removes an xmlNodePtr from an existing NodeSet</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
      <arg name='val' type='xmlNodePtr' info='an xmlNodePtr'/>
    </function>
    <function name='xmlXPathNodeSetFreeNs' file='xpathInternals'>
      <info>Namespace node in libxml don&apos;t match the XPath semantic. In a node set the namespace nodes are duplicated and the next pointer is set to the parent node in the XPath semantic. Check if such a node need to be freed</info>
      <return type='void'/>
      <arg name='ns' type='xmlNsPtr' info='the XPath namespace node found in a nodeset.'/>
    </function>
    <function name='xmlXPathNodeSetMerge' file='xpathInternals'>
      <info>Merges two nodesets, all nodes from @val2 are added to @val1 if @val1 is NULL, a new set is created and copied from @val2</info>
      <return type='xmlNodeSetPtr' info='@val1 once extended or NULL in case of error.'/>
      <arg name='val1' type='xmlNodeSetPtr' info='the first NodeSet or NULL'/>
      <arg name='val2' type='xmlNodeSetPtr' info='the second NodeSet'/>
    </function>
    <function name='xmlXPathNodeSetRemove' file='xpathInternals'>
      <info>Removes an entry from an existing NodeSet list.</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
      <arg name='val' type='int' info='the index to remove'/>
    </function>
    <function name='xmlXPathNodeSetSort' file='xpathInternals'>
      <info>Sort the node set in document order</info>
      <return type='void'/>
      <arg name='set' type='xmlNodeSetPtr' info='the node set'/>
    </function>
    <function name='xmlXPathNodeTrailing' file='xpathInternals'>
      <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set) @nodes is sorted by document order, then #xmlXPathNodeTrailingSorted is called.</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes that follow @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlXPathNodeTrailingSorted' file='xpathInternals'>
      <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes that follow @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
      <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
      <arg name='node' type='xmlNodePtr' info='a node'/>
    </function>
    <function name='xmlXPathNormalizeFunction' file='xpathInternals'>
      <info>Implement the normalize-space() XPath function string normalize-space(string?) The normalize-space function returns the argument string with white space normalized by stripping leading and trailing whitespace and replacing sequences of whitespace characters by a single space. Whitespace characters are the same allowed by the S production in XML. If the argument is omitted, it defaults to the context node converted to a string, in other words the value of the context node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathNotEqualValues' file='xpathInternals'>
      <info>Implement the equal operation on XPath objects content: @arg1 == @arg2</info>
      <return type='int' info='0 or 1 depending on the results of the test.'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathNotFunction' file='xpathInternals'>
      <info>Implement the not() XPath function boolean not(boolean) The not function returns true if its argument is false, and false otherwise.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathNsLookup' file='xpathInternals'>
      <info>Search in the namespace declaration array of the context for the given namespace name associated to the given prefix</info>
      <return type='const xmlChar *' info='the value or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='prefix' type='const xmlChar *' info='the namespace prefix value'/>
    </function>
    <function name='xmlXPathNumberFunction' file='xpathInternals'>
      <info>Implement the number() XPath function number number(object?)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathObjectCopy' file='xpath'>
      <info>allocate a new copy of a given object</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlXPathObjectPtr' info='the original object'/>
    </function>
    <function name='xmlXPathParseNCName' file='xpathInternals'>
      <info>parse an XML namespace non qualified name.  [NS 3] NCName ::= (Letter | &apos;_&apos;) (NCNameChar)*  [NS 4] NCNameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | CombiningChar | Extender</info>
      <return type='xmlChar *' info='the namespace name or NULL'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathParseName' file='xpathInternals'>
      <info>parse an XML name  [4] NameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | &apos;:&apos; | CombiningChar | Extender  [5] Name ::= (Letter | &apos;_&apos; | &apos;:&apos;) (NameChar)*</info>
      <return type='xmlChar *' info='the namespace name or NULL'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathPopBoolean' file='xpathInternals'>
      <info>Pops a boolean from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
      <return type='int' info='the boolean'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
    </function>
    <function name='xmlXPathPopExternal' file='xpathInternals'>
      <info>Pops an external object from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
      <return type='void *' info='the object'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
    </function>
    <function name='xmlXPathPopNodeSet' file='xpathInternals'>
      <info>Pops a node-set from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
      <return type='xmlNodeSetPtr' info='the node-set'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
    </function>
    <function name='xmlXPathPopNumber' file='xpathInternals'>
      <info>Pops a number from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
      <return type='double' info='the number'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
    </function>
    <function name='xmlXPathPopString' file='xpathInternals'>
      <info>Pops a string from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
      <return type='xmlChar *' info='the string'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
    </function>
    <function name='xmlXPathPositionFunction' file='xpathInternals'>
      <info>Implement the position() XPath function number position() The position function returns the position of the context node in the context node list. The first position is 1, and so the last position will be equal to last().</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathRegisterAllFunctions' file='xpathInternals'>
      <info>Registers all default XPath functions in this context</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathRegisterFunc' file='xpathInternals'>
      <info>Register a new function. If @f is NULL it unregisters the function</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the function name'/>
      <arg name='f' type='xmlXPathFunction' info='the function implementation or NULL'/>
    </function>
    <function name='xmlXPathRegisterFuncLookup' file='xpathInternals'>
      <info>Registers an external mechanism to do function lookup.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='f' type='xmlXPathFuncLookupFunc' info='the lookup function'/>
      <arg name='funcCtxt' type='void *' info='the lookup data'/>
    </function>
    <function name='xmlXPathRegisterFuncNS' file='xpathInternals'>
      <info>Register a new function. If @f is NULL it unregisters the function</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the function name'/>
      <arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
      <arg name='f' type='xmlXPathFunction' info='the function implementation or NULL'/>
    </function>
    <function name='xmlXPathRegisterNs' file='xpathInternals'>
      <info>Register a new namespace. If @ns_uri is NULL it unregisters the namespace</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
      <arg name='ns_uri' type='const xmlChar *' info='the namespace name'/>
    </function>
    <function name='xmlXPathRegisterVariable' file='xpathInternals'>
      <info>Register a new variable value. If @value is NULL it unregisters the variable</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the variable name'/>
      <arg name='value' type='xmlXPathObjectPtr' info='the variable value or NULL'/>
    </function>
    <function name='xmlXPathRegisterVariableLookup' file='xpathInternals'>
      <info>register an external mechanism to do variable lookup</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='f' type='xmlXPathVariableLookupFunc' info='the lookup function'/>
      <arg name='data' type='void *' info='the lookup data'/>
    </function>
    <function name='xmlXPathRegisterVariableNS' file='xpathInternals'>
      <info>Register a new variable value. If @value is NULL it unregisters the variable</info>
      <return type='int' info='0 in case of success, -1 in case of error'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the variable name'/>
      <arg name='ns_uri' type='const xmlChar *' info='the variable namespace URI'/>
      <arg name='value' type='xmlXPathObjectPtr' info='the variable value or NULL'/>
    </function>
    <function name='xmlXPathRegisteredFuncsCleanup' file='xpathInternals'>
      <info>Cleanup the XPath context data associated to registered functions</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathRegisteredNsCleanup' file='xpathInternals'>
      <info>Cleanup the XPath context data associated to registered variables</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathRegisteredVariablesCleanup' file='xpathInternals'>
      <info>Cleanup the XPath context data associated to registered variables</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
    </function>
    <function name='xmlXPathRoot' file='xpathInternals'>
      <info>Initialize the context to the root of the document</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathRoundFunction' file='xpathInternals'>
      <info>Implement the round() XPath function number round(number) The round function returns the number that is closest to the argument and that is an integer. If there are two such numbers, then the one that is even is returned.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathStartsWithFunction' file='xpathInternals'>
      <info>Implement the starts-with() XPath function boolean starts-with(string, string) The starts-with function returns true if the first argument string starts with the second argument string, and otherwise returns false.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathStringEvalNumber' file='xpathInternals'>
      <info>[30a]  Float  ::= Number (&apos;e&apos; Digits?)?  [30]   Number ::=   Digits (&apos;.&apos; Digits?)? | &apos;.&apos; Digits [31]   Digits ::=   [0-9]+  Compile a Number in the string In complement of the Number expression, this function also handles negative values : &apos;-&apos; Number.</info>
      <return type='double' info='the double value.'/>
      <arg name='str' type='const xmlChar *' info='A string to scan'/>
    </function>
    <function name='xmlXPathStringFunction' file='xpathInternals'>
      <info>Implement the string() XPath function string string(object?) he string function converts an object to a string as follows: - A node-set is converted to a string by returning the value of the node in the node-set that is first in document order. If the node-set is empty, an empty string is returned. - A number is converted to a string as follows + NaN is converted to the string NaN + positive zero is converted to the string 0 + negative zero is converted to the string 0 + positive infinity is converted to the string Infinity + negative infinity is converted to the string -Infinity + if the number is an integer, the number is represented in decimal form as a Number with no decimal point and no leading zeros, preceded by a minus sign (-) if the number is negative + otherwise, the number is represented in decimal form as a Number including a decimal point with at least one digit before the decimal point and at least one digit after the decimal point, preceded by a minus sign (-) if the number is negative; there must be no leading zeros before the decimal point apart possibly from the one required digit immediately before the decimal point; beyond the one required digit after the decimal point there must be as many, but only as many, more digits as are needed to uniquely distinguish the number from all other IEEE 754 numeric values. - The boolean false value is converted to the string false. The boolean true value is converted to the string true.  If the argument is omitted, it defaults to a node-set with the context node as its only member.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathStringLengthFunction' file='xpathInternals'>
      <info>Implement the string-length() XPath function number string-length(string?) The string-length returns the number of characters in the string (see [3.6 Strings]). If the argument is omitted, it defaults to the context node converted to a string, in other words the value of the context node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathSubValues' file='xpathInternals'>
      <info>Implement the subtraction operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathSubstringAfterFunction' file='xpathInternals'>
      <info>Implement the substring-after() XPath function string substring-after(string, string) The substring-after function returns the substring of the first argument string that follows the first occurrence of the second argument string in the first argument string, or the empty stringi if the first argument string does not contain the second argument string. For example, substring-after(&quot;1999/04/01&quot;,&quot;/&quot;) returns 04/01, and substring-after(&quot;1999/04/01&quot;,&quot;19&quot;) returns 99/04/01.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathSubstringBeforeFunction' file='xpathInternals'>
      <info>Implement the substring-before() XPath function string substring-before(string, string) The substring-before function returns the substring of the first argument string that precedes the first occurrence of the second argument string in the first argument string, or the empty string if the first argument string does not contain the second argument string. For example, substring-before(&quot;1999/04/01&quot;,&quot;/&quot;) returns 1999.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathSubstringFunction' file='xpathInternals'>
      <info>Implement the substring() XPath function string substring(string, number, number?) The substring function returns the substring of the first argument starting at the position specified in the second argument with length specified in the third argument. For example, substring(&quot;12345&quot;,2,3) returns &quot;234&quot;. If the third argument is not specified, it returns the substring starting at the position specified in the second argument and continuing to the end of the string. For example, substring(&quot;12345&quot;,2) returns &quot;2345&quot;.  More precisely, each character in the string (see [3.6 Strings]) is considered to have a numeric position: the position of the first character is 1, the position of the second character is 2 and so on. The returned substring contains those characters for which the position of the character is greater than or equal to the second argument and, if the third argument is specified, less than the sum of the second and third arguments; the comparisons and addition used for the above follow the standard IEEE 754 rules. Thus: - substring(&quot;12345&quot;, 1.5, 2.6) returns &quot;234&quot; - substring(&quot;12345&quot;, 0, 3) returns &quot;12&quot; - substring(&quot;12345&quot;, 0 div 0, 3) returns &quot;&quot; - substring(&quot;12345&quot;, 1, 0 div 0) returns &quot;&quot; - substring(&quot;12345&quot;, -42, 1 div 0) returns &quot;12345&quot; - substring(&quot;12345&quot;, -1 div 0, 1 div 0) returns &quot;&quot;</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathSumFunction' file='xpathInternals'>
      <info>Implement the sum() XPath function number sum(node-set) The sum function returns the sum of the values of the nodes in the argument node-set.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathTrailing' file='xpathInternals'>
      <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set) @nodes1 and @nodes2 are sorted by document order, then #xmlXPathTrailingSorted is called.</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that follow the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
    </function>
    <function name='xmlXPathTrailingSorted' file='xpathInternals'>
      <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set)</info>
      <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that follow the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
      <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
      <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
    </function>
    <function name='xmlXPathTranslateFunction' file='xpathInternals'>
      <info>Implement the translate() XPath function string translate(string, string, string) The translate function returns the first argument string with occurrences of characters in the second argument string replaced by the character at the corresponding position in the third argument string. For example, translate(&quot;bar&quot;,&quot;abc&quot;,&quot;ABC&quot;) returns the string BAr. If there is a character in the second argument string with no character at a corresponding position in the third argument string (because the second argument string is longer than the third argument string), then occurrences of that character in the first argument string are removed. For example, translate(&quot;--aaa--&quot;,&quot;abc-&quot;,&quot;ABC&quot;)</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathTrueFunction' file='xpathInternals'>
      <info>Implement the true() XPath function boolean true()</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='nargs' type='int' info='the number of arguments'/>
    </function>
    <function name='xmlXPathValueFlipSign' file='xpathInternals'>
      <info>Implement the unary - operation on an XPath object The numeric operators convert their operands to numbers as if by calling the number function.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
    </function>
    <function name='xmlXPathVariableLookup' file='xpathInternals'>
      <info>Search in the Variable array of the context for the given variable value.</info>
      <return type='xmlXPathObjectPtr' info='a copy of the value or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the variable name'/>
    </function>
    <functype name='xmlXPathVariableLookupFunc' file='xpathInternals'>
      <info>Prototype for callbacks used to plug variable lookup in the XPath engine.</info>
      <return type='xmlXPathObjectPtr' info='the XPath object value or NULL if not found.'/>
      <arg name='ctxt' type='void *' info='an XPath context'/>
      <arg name='name' type='const xmlChar *' info='name of the variable'/>
      <arg name='ns_uri' type='const xmlChar *' info='the namespace name hosting this variable'/>
    </functype>
    <function name='xmlXPathVariableLookupNS' file='xpathInternals'>
      <info>Search in the Variable array of the context for the given variable value.</info>
      <return type='xmlXPathObjectPtr' info='the a copy of the value or NULL if not found'/>
      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
      <arg name='name' type='const xmlChar *' info='the variable name'/>
      <arg name='ns_uri' type='const xmlChar *' info='the variable namespace URI'/>
    </function>
    <function name='xmlXPathWrapCString' file='xpathInternals'>
      <info>Wraps a string into an XPath object.</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='char *' info='the char * value'/>
    </function>
    <function name='xmlXPathWrapExternal' file='xpathInternals'>
      <info>Wraps the @val data into an XPath object.</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='void *' info='the user data'/>
    </function>
    <function name='xmlXPathWrapNodeSet' file='xpathInternals'>
      <info>Wrap the Nodeset @val in a new xmlXPathObjectPtr</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlNodeSetPtr' info='the NodePtr value'/>
    </function>
    <function name='xmlXPathWrapString' file='xpathInternals'>
      <info>Wraps the @val string into an XPath object.</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlChar *' info='the xmlChar * value'/>
    </function>
    <function name='xmlXPatherror' file='xpathInternals'>
      <info>Formats an error message.</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
      <arg name='file' type='const char *' info='the file name'/>
      <arg name='line' type='int' info='the line number'/>
      <arg name='no' type='int' info='the error number'/>
    </function>
    <function name='xmlXPtrBuildNodeList' file='xpointer'>
      <info>Build a node list tree copy of the XPointer result. This will drop Attributes and Namespace declarations.</info>
      <return type='xmlNodePtr' info='an xmlNodePtr list or NULL. the caller has to free the node tree.'/>
      <arg name='obj' type='xmlXPathObjectPtr' info='the XPointer result from the evaluation.'/>
    </function>
    <function name='xmlXPtrEval' file='xpointer'>
      <info>Evaluate the XPath Location Path in the given context.</info>
      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
      <arg name='str' type='const xmlChar *' info='the XPointer expression'/>
      <arg name='ctx' type='xmlXPathContextPtr' info='the XPointer context'/>
    </function>
    <function name='xmlXPtrEvalRangePredicate' file='xpointer'>
      <info>[8]   Predicate ::=   &apos;[&apos; PredicateExpr &apos;]&apos; [9]   PredicateExpr ::=   Expr  Evaluate a predicate as in xmlXPathEvalPredicate() but for a Location Set instead of a node set</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPointer Parser context'/>
    </function>
    <function name='xmlXPtrFreeLocationSet' file='xpointer'>
      <info>Free the LocationSet compound (not the actual ranges !).</info>
      <return type='void'/>
      <arg name='obj' type='xmlLocationSetPtr' info='the xmlLocationSetPtr to free'/>
    </function>
    <function name='xmlXPtrLocationSetAdd' file='xpointer'>
      <info>add a new xmlXPathObjectPtr to an existing LocationSet If the location already exist in the set @val is freed.</info>
      <return type='void'/>
      <arg name='cur' type='xmlLocationSetPtr' info='the initial range set'/>
      <arg name='val' type='xmlXPathObjectPtr' info='a new xmlXPathObjectPtr'/>
    </function>
    <function name='xmlXPtrLocationSetCreate' file='xpointer'>
      <info>Create a new xmlLocationSetPtr of type double and of value @val</info>
      <return type='xmlLocationSetPtr' info='the newly created object.'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an initial xmlXPathObjectPtr, or NULL'/>
    </function>
    <function name='xmlXPtrLocationSetDel' file='xpointer'>
      <info>Removes an xmlXPathObjectPtr from an existing LocationSet</info>
      <return type='void'/>
      <arg name='cur' type='xmlLocationSetPtr' info='the initial range set'/>
      <arg name='val' type='xmlXPathObjectPtr' info='an xmlXPathObjectPtr'/>
    </function>
    <function name='xmlXPtrLocationSetMerge' file='xpointer'>
      <info>Merges two rangesets, all ranges from @val2 are added to @val1</info>
      <return type='xmlLocationSetPtr' info='val1 once extended or NULL in case of error.'/>
      <arg name='val1' type='xmlLocationSetPtr' info='the first LocationSet'/>
      <arg name='val2' type='xmlLocationSetPtr' info='the second LocationSet'/>
    </function>
    <function name='xmlXPtrLocationSetRemove' file='xpointer'>
      <info>Removes an entry from an existing LocationSet list.</info>
      <return type='void'/>
      <arg name='cur' type='xmlLocationSetPtr' info='the initial range set'/>
      <arg name='val' type='int' info='the index to remove'/>
    </function>
    <function name='xmlXPtrNewCollapsedRange' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range using a single nodes</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlNodePtr' info='the starting and ending node'/>
    </function>
    <function name='xmlXPtrNewContext' file='xpointer'>
      <info>Create a new XPointer context</info>
      <return type='xmlXPathContextPtr' info='the xmlXPathContext just allocated.'/>
      <arg name='doc' type='xmlDocPtr' info='the XML document'/>
      <arg name='here' type='xmlNodePtr' info='the node that directly contains the XPointer being evaluated or NULL'/>
      <arg name='origin' type='xmlNodePtr' info='the element from which a user or program initiated traversal of the link, or NULL.'/>
    </function>
    <function name='xmlXPtrNewLocationSetNodeSet' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type LocationSet and initialize it with all the nodes from @set</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='set' type='xmlNodeSetPtr' info='a node set'/>
    </function>
    <function name='xmlXPtrNewLocationSetNodes' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type LocationSet and initialize it with the single range made of the two nodes @start and @end</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlNodePtr' info='the start NodePtr value'/>
      <arg name='end' type='xmlNodePtr' info='the end NodePtr value or NULL'/>
    </function>
    <function name='xmlXPtrNewRange' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlNodePtr' info='the starting node'/>
      <arg name='startindex' type='int' info='the start index'/>
      <arg name='end' type='xmlNodePtr' info='the ending point'/>
      <arg name='endindex' type='int' info='the ending index'/>
    </function>
    <function name='xmlXPtrNewRangeNodeObject' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range from a not to an object</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlNodePtr' info='the starting node'/>
      <arg name='end' type='xmlXPathObjectPtr' info='the ending object'/>
    </function>
    <function name='xmlXPtrNewRangeNodePoint' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range from a node to a point</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlNodePtr' info='the starting node'/>
      <arg name='end' type='xmlXPathObjectPtr' info='the ending point'/>
    </function>
    <function name='xmlXPtrNewRangeNodes' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range using 2 nodes</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlNodePtr' info='the starting node'/>
      <arg name='end' type='xmlNodePtr' info='the ending node'/>
    </function>
    <function name='xmlXPtrNewRangePointNode' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range from a point to a node</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlXPathObjectPtr' info='the starting point'/>
      <arg name='end' type='xmlNodePtr' info='the ending node'/>
    </function>
    <function name='xmlXPtrNewRangePoints' file='xpointer'>
      <info>Create a new xmlXPathObjectPtr of type range using 2 Points</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='start' type='xmlXPathObjectPtr' info='the starting point'/>
      <arg name='end' type='xmlXPathObjectPtr' info='the ending point'/>
    </function>
    <function name='xmlXPtrRangeToFunction' file='xpointer'>
      <info>Implement the range-to() XPointer function</info>
      <return type='void'/>
      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPointer Parser context'/>
      <arg name='nargs' type='int' info='the number of args'/>
    </function>
    <function name='xmlXPtrWrapLocationSet' file='xpointer'>
      <info>Wrap the LocationSet @val in a new xmlXPathObjectPtr</info>
      <return type='xmlXPathObjectPtr' info='the newly created object.'/>
      <arg name='val' type='xmlLocationSetPtr' info='the LocationSet value'/>
    </function>
  </symbols>
</api>
