          Generated Classes for libxml2-python

#
# Global functions of the module
#


# functions from module HTMLparser
htmlHandleOmittedElem()
htmlIsScriptAttribute()
htmlParseDoc()
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()
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
SAXParseFile()
createPushParser()
debugMemory()
dumpMemory()
htmlCreatePushParser()
htmlSAXParseFile()
newNode()
registerErrorHandler()

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

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

# functions from module valid
validateNameValue()
validateNamesValue()
validateNmtokenValue()
validateNmtokensValue()

# functions from module xmlIO
cleanupInputCallbacks()
cleanupOutputCallbacks()
fileMatch()
iOFTPMatch()
iOHTTPMatch()
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 xpath
    xpathNewContext()


Class xmlAttribute(xmlNode)


Class xmlNs(xmlNode)

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


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 HTMLparser
    htmlFreeParserCtxt()
    htmlParseCharRef()
    htmlParseChunk()
    htmlParseDocument()
    htmlParseElement()

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

    # functions from module parserInternals
    decodeEntities()
    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 URI()
    # accessors
    authority()
    fragment()
    opaque()
    path()
    port()
    query()
    scheme()
    server()
    setAuthority()
    setFragment()
    setOpaque()
    setPath()
    setPort()
    setQuery()
    setScheme()
    setServer()
    setUser()
    user()

    # functions from module uri
    freeURI()
    parseURIReference()
    printURI()
    saveUri()
Class xpathContext()
    # accessors
    contextDoc()
    contextNode()
    contextPosition()
    contextSize()
    function()
    functionURI()
    setContextDoc()
    setContextNode()

    # functions from module python
    registerXPathFunction()

    # functions from module xpath
    xpathEval()
    xpathEvalExpression()
    xpathFreeContext()

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