          Generated Classes for libxml2-python

#
# Global functions of the module
#


# functions from module HTMLparser
htmlFreeParserCtxt()
htmlHandleOmittedElem()
htmlIsScriptAttribute()
htmlParseCharRef()
htmlParseChunk()
htmlParseDoc()
htmlParseElement()
htmlParseFile()

# functions from module HTMLtree
htmlNewDoc()
htmlNewDocNoDtD()

# functions from module catalog
catalogAdd()
catalogCleanup()
catalogConvert()
catalogDump()
catalogGetPublic()
catalogGetSystem()
catalogRemove()
catalogResolve()
catalogResolvePublic()
catalogResolveSystem()
catalogResolveURI()
catalogSetDebug()
initializeCatalog()
loadACatalog()
loadCatalog()
loadCatalogs()
loadSGMLSuperCatalog()
newCatalog()
parseCatalogFile()

# functions from module debugXML
debugDumpString()
shellPrintXPathError()

# functions from module encoding
UTF8Strlen()
UTF8Strloc()
UTF8Strndup()
UTF8Strpos()
UTF8Strsize()
UTF8Strsub()
addEncodingAlias()
checkUTF8()
cleanupCharEncodingHandlers()
cleanupEncodingAliases()
delEncodingAlias()
encodingAlias()
initCharEncodingHandlers()

# functions from module entities
cleanupPredefinedEntities()
initializePredefinedEntities()
predefinedEntity()

# functions from module nanoftp
nanoFTPCleanup()
nanoFTPInit()
nanoFTPProxy()
nanoFTPScanProxy()

# functions from module nanohttp
nanoHTTPCleanup()
nanoHTTPInit()
nanoHTTPScanProxy()

# functions from module parser
cleanupParser()
createDocParserCtxt()
defaultSAXHandlerInit()
htmlDefaultSAXHandlerInit()
initParser()
keepBlanksDefault()
lineNumbersDefault()
parseDTD()
parseDoc()
parseEntity()
parseFile()
parseMemory()
pedanticParserDefault()
recoverDoc()
recoverFile()
recoverMemory()
substituteEntitiesDefault()

# functions from module parserInternals
checkLanguageID()
copyChar()
copyCharMultiByte()
createEntityParserCtxt()
createFileParserCtxt()
createMemoryParserCtxt()
htmlCreateFileParserCtxt()
htmlInitAutoClose()
isBaseChar()
isBlank()
isChar()
isCombining()
isDigit()
isExtender()
isIdeographic()
isLetter()
isPubidChar()
namePop()
namePush()
newParserCtxt()
nodePop()
nodePush()

# functions from module python
createPushParser()
debugMemory()
dumpMemory()
htmlCreatePushParser()
registerErrorHandler()

# functions from module tree
compressMode()
newComment()
newDoc()
newPI()
newText()
newTextLen()
setCompressMode()

# functions from module uri
URIEscape()
URIEscapeStr()
URIUnescapeString()
buildURI()
normalizeURIPath()

# functions from module xmlIO
cleanupInputCallbacks()
cleanupOutputCallbacks()
parserGetDirectory()
registerDefaultInputCallbacks()
registerDefaultOutputCallbacks()
registerHTTPPostCallbacks()

# functions from module xmlversion
checkVersion()

# functions from module xpathInternals
valuePop()


#
# Set of classes of the module
#



Class xmlNode(xmlCore)
    # accessors
    ns()
    nsDefs()

    # functions from module debugXML
    debugDumpNode()
    debugDumpNodeList()
    debugDumpOneNode()
    lsCountNode()
    lsOneNode()
    shellPrintNode()

    # functions from module tree
    addChild()
    addChildList()
    addContent()
    addContentLen()
    addNextSibling()
    addPrevSibling()
    addSibling()
    copyNode()
    copyNodeList()
    copyProp()
    copyPropList()
    docCopyNode()
    docSetRootElement()
    freeNode()
    freeNodeList()
    getBase()
    getContent()
    getLang()
    getSpacePreserve()
    hasNsProp()
    hasProp()
    isBlankNode()
    isText()
    lastChild()
    lineNo()
    listGetRawString()
    listGetString()
    newChild()
    newNs()
    newNsProp()
    newProp()
    newTextChild()
    nodePath()
    nsProp()
    prop()
    reconciliateNs()
    replaceNode()
    searchNs()
    searchNsByHref()
    setBase()
    setContent()
    setContentLen()
    setLang()
    setListDoc()
    setName()
    setNs()
    setNsProp()
    setProp()
    setSpacePreserve()
    setTreeDoc()
    textConcat()
    textMerge()
    unlinkNode()
    unsetNsProp()
    unsetProp()

    # functions from module valid
    isID()
    isRef()
    validNormalizeAttributeValue()

    # functions from module xpath
    xpathCastNodeToNumber()
    xpathCastNodeToString()
    xpathCmpNodes()

    # functions from module xpathInternals
    xpathNewNodeSet()
    xpathNewValueTree()
    xpathNextAncestor()
    xpathNextAncestorOrSelf()
    xpathNextAttribute()
    xpathNextChild()
    xpathNextDescendant()
    xpathNextDescendantOrSelf()
    xpathNextFollowing()
    xpathNextFollowingSibling()
    xpathNextNamespace()
    xpathNextParent()
    xpathNextPreceding()
    xpathNextPrecedingSibling()
    xpathNextSelf()


Class xmlDoc(xmlNode)

    # functions from module HTMLparser
    htmlAutoCloseTag()
    htmlIsAutoClosed()

    # functions from module HTMLtree
    htmlDocDump()
    htmlGetMetaEncoding()
    htmlNodeDumpFile()
    htmlNodeDumpFileFormat()
    htmlSaveFile()
    htmlSaveFileEnc()
    htmlSaveFileFormat()
    htmlSetMetaEncoding()

    # functions from module debugXML
    debugDumpDocument()
    debugDumpDocumentHead()
    debugDumpEntities()

    # functions from module entities
    addDocEntity()
    addDtdEntity()
    docEntity()
    dtdEntity()
    encodeEntities()
    encodeEntitiesReentrant()
    encodeSpecialChars()
    parameterEntity()

    # functions from module tree
    copyDoc()
    createIntSubset()
    docCompressMode()
    dump()
    elemDump()
    freeDoc()
    getRootElement()
    intSubset()
    newCDataBlock()
    newCharRef()
    newDocComment()
    newDocFragment()
    newDocNode()
    newDocProp()
    newDocRawNode()
    newDocText()
    newDocTextLen()
    newDtd()
    newGlobalNs()
    newReference()
    saveFile()
    saveFileEnc()
    saveFormatFile()
    saveFormatFileEnc()
    setDocCompressMode()
    stringGetNodeList()
    stringLenGetNodeList()

    # functions from module valid
    ID()
    isMixedElement()
    removeID()
    removeRef()

    # functions from module xinclude
    xincludeProcess()

    # functions from module xpathInternals
    xpathNewContext()


Class xmlAttribute(xmlNode)


Class xmlNs(xmlNode)

    # functions from module tree
    copyNamespace()
    copyNamespaceList()
    freeNs()
    freeNsList()
    newNode()


Class xmlDtd(xmlNode)

    # functions from module debugXML
    debugDumpDTD()

    # functions from module tree
    copyDtd()
    freeDtd()

    # functions from module valid
    dtdAttrDesc()
    dtdElementDesc()
    dtdQAttrDesc()
    dtdQElementDesc()
Class catalog()

    # functions from module catalog
    add()
    catalogIsEmpty()
    convertSGMLCatalog()
    dump()
    freeCatalog()
    remove()
    resolve()
    resolvePublic()
    resolveSystem()
    resolveURI()
Class xpathParserContext()
    # accessors
    context()

    # functions from module xpathInternals
    xpathAddValues()
    xpathBooleanFunction()
    xpathCeilingFunction()
    xpathCompareValues()
    xpathConcatFunction()
    xpathContainsFunction()
    xpathCountFunction()
    xpathDivValues()
    xpathEqualValues()
    xpathEvalExpr()
    xpathFalseFunction()
    xpathFloorFunction()
    xpathFreeParserContext()
    xpathIdFunction()
    xpathLangFunction()
    xpathLastFunction()
    xpathLocalNameFunction()
    xpathModValues()
    xpathMultValues()
    xpathNamespaceURIFunction()
    xpathNormalizeFunction()
    xpathNotFunction()
    xpathNumberFunction()
    xpathParseNCName()
    xpathParseName()
    xpathPopBoolean()
    xpathPopNumber()
    xpathPopString()
    xpathPositionFunction()
    xpathRoot()
    xpathRoundFunction()
    xpathStartsWithFunction()
    xpathStringFunction()
    xpathStringLengthFunction()
    xpathSubValues()
    xpathSubstringAfterFunction()
    xpathSubstringBeforeFunction()
    xpathSubstringFunction()
    xpathSumFunction()
    xpathTranslateFunction()
    xpathTrueFunction()
    xpathValueFlipSign()
    xpatherror()
Class parserCtxt()
    # accessors
    doc()
    isValid()
    lineNumbers()
    loadSubset()
    pedantic()
    replaceEntities()
    validate()
    wellFormed()

    # functions from module parser
    clearParserCtxt()
    initParserCtxt()
    parseChunk()
    parseDocument()
    parseExtParsedEnt()
    stopParser()

    # functions from module parserInternals
    decodeEntities()
    freeParserCtxt()
    namespaceParseNCName()
    namespaceParseNSDef()
    nextChar()
    parseAttValue()
    parseAttributeListDecl()
    parseCDSect()
    parseCharData()
    parseCharRef()
    parseComment()
    parseContent()
    parseDocTypeDecl()
    parseElement()
    parseElementDecl()
    parseEncName()
    parseEncodingDecl()
    parseEndTag()
    parseEntityDecl()
    parseEntityRef()
    parseExternalSubset()
    parseMarkupDecl()
    parseMisc()
    parseName()
    parseNamespace()
    parseNmtoken()
    parseNotationDecl()
    parsePEReference()
    parsePI()
    parsePITarget()
    parsePubidLiteral()
    parseQuotedString()
    parseReference()
    parseSDDecl()
    parseStartTag()
    parseSystemLiteral()
    parseTextDecl()
    parseVersionInfo()
    parseVersionNum()
    parseXMLDecl()
    parserHandlePEReference()
    parserHandleReference()
    popInput()
    scanName()
    skipBlankChars()
    stringDecodeEntities()


Class xmlElement(xmlNode)


Class xmlEntity(xmlNode)

    # functions from module parserInternals
    handleEntity()


Class xmlAttr(xmlNode)

    # functions from module debugXML
    debugDumpAttr()
    debugDumpAttrList()

    # functions from module tree
    freeProp()
    freePropList()
    removeProp()
Class xpathContext()
    # accessors
    contextDoc()
    contextNode()
    contextPosition()
    contextSize()
    function()
    functionURI()

    # functions from module python
    registerXPathFunction()

    # functions from module xpath
    xpathEval()
    xpathEvalExpression()

    # functions from module xpathInternals
    xpathFreeContext()
    xpathNewParserContext()
    xpathNsLookup()
    xpathRegisterAllFunctions()
    xpathRegisterNs()
    xpathRegisteredFuncsCleanup()
    xpathRegisteredNsCleanup()
    xpathRegisteredVariablesCleanup()
    xpathVariableLookup()
    xpathVariableLookupNS()
