          Generated Classes for libxml2-python

#
# Global functions of the module
#


# functions from module HTMLparser
htmlHandleOmittedElem()
htmlIsScriptAttribute()
htmlParseDoc()
htmlParseFile()

# functions from module HTMLtree
htmlIsBooleanAttr()
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
boolToText()
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()
createInputBuffer()
createOutputBuffer()
createPushParser()
debugMemory()
dumpMemory()
htmlCreatePushParser()
htmlSAXParseFile()
newNode()
registerErrorHandler()
setEntityLoader()

# functions from module tree
compressMode()
isXHTML()
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
checkFilename()
cleanupInputCallbacks()
cleanupOutputCallbacks()
fileMatch()
iOFTPMatch()
iOHTTPMatch()
normalizeWindowsPath()
parserGetDirectory()
registerDefaultInputCallbacks()
registerDefaultOutputCallbacks()
registerHTTPPostCallbacks()

# functions from module xmlreader
newTextReaderFilename()

# functions from module xmlregexp
regexpCompile()

# functions from module xmlunicode
uCSIsAlphabeticPresentationForms()
uCSIsArabic()
uCSIsArabicPresentationFormsA()
uCSIsArabicPresentationFormsB()
uCSIsArmenian()
uCSIsArrows()
uCSIsBasicLatin()
uCSIsBengali()
uCSIsBlock()
uCSIsBlockElements()
uCSIsBopomofo()
uCSIsBopomofoExtended()
uCSIsBoxDrawing()
uCSIsBraillePatterns()
uCSIsByzantineMusicalSymbols()
uCSIsCJKCompatibility()
uCSIsCJKCompatibilityForms()
uCSIsCJKCompatibilityIdeographs()
uCSIsCJKCompatibilityIdeographsSupplement()
uCSIsCJKRadicalsSupplement()
uCSIsCJKSymbolsandPunctuation()
uCSIsCJKUnifiedIdeographs()
uCSIsCJKUnifiedIdeographsExtensionA()
uCSIsCJKUnifiedIdeographsExtensionB()
uCSIsCat()
uCSIsCatC()
uCSIsCatCc()
uCSIsCatCf()
uCSIsCatCo()
uCSIsCatCs()
uCSIsCatL()
uCSIsCatLl()
uCSIsCatLm()
uCSIsCatLo()
uCSIsCatLt()
uCSIsCatLu()
uCSIsCatM()
uCSIsCatMc()
uCSIsCatMe()
uCSIsCatMn()
uCSIsCatN()
uCSIsCatNd()
uCSIsCatNl()
uCSIsCatNo()
uCSIsCatP()
uCSIsCatPc()
uCSIsCatPd()
uCSIsCatPe()
uCSIsCatPf()
uCSIsCatPi()
uCSIsCatPo()
uCSIsCatPs()
uCSIsCatS()
uCSIsCatSc()
uCSIsCatSk()
uCSIsCatSm()
uCSIsCatSo()
uCSIsCatZ()
uCSIsCatZl()
uCSIsCatZp()
uCSIsCatZs()
uCSIsCherokee()
uCSIsCombiningDiacriticalMarks()
uCSIsCombiningHalfMarks()
uCSIsCombiningMarksforSymbols()
uCSIsControlPictures()
uCSIsCurrencySymbols()
uCSIsCyrillic()
uCSIsDeseret()
uCSIsDevanagari()
uCSIsDingbats()
uCSIsEnclosedAlphanumerics()
uCSIsEnclosedCJKLettersandMonths()
uCSIsEthiopic()
uCSIsGeneralPunctuation()
uCSIsGeometricShapes()
uCSIsGeorgian()
uCSIsGothic()
uCSIsGreek()
uCSIsGreekExtended()
uCSIsGujarati()
uCSIsGurmukhi()
uCSIsHalfwidthandFullwidthForms()
uCSIsHangulCompatibilityJamo()
uCSIsHangulJamo()
uCSIsHangulSyllables()
uCSIsHebrew()
uCSIsHighPrivateUseSurrogates()
uCSIsHighSurrogates()
uCSIsHiragana()
uCSIsIPAExtensions()
uCSIsIdeographicDescriptionCharacters()
uCSIsKanbun()
uCSIsKangxiRadicals()
uCSIsKannada()
uCSIsKatakana()
uCSIsKhmer()
uCSIsLao()
uCSIsLatin1Supplement()
uCSIsLatinExtendedA()
uCSIsLatinExtendedAdditional()
uCSIsLatinExtendedB()
uCSIsLetterlikeSymbols()
uCSIsLowSurrogates()
uCSIsMalayalam()
uCSIsMathematicalAlphanumericSymbols()
uCSIsMathematicalOperators()
uCSIsMiscellaneousSymbols()
uCSIsMiscellaneousTechnical()
uCSIsMongolian()
uCSIsMusicalSymbols()
uCSIsMyanmar()
uCSIsNumberForms()
uCSIsOgham()
uCSIsOldItalic()
uCSIsOpticalCharacterRecognition()
uCSIsOriya()
uCSIsPrivateUse()
uCSIsRunic()
uCSIsSinhala()
uCSIsSmallFormVariants()
uCSIsSpacingModifierLetters()
uCSIsSpecials()
uCSIsSuperscriptsandSubscripts()
uCSIsSyriac()
uCSIsTags()
uCSIsTamil()
uCSIsTelugu()
uCSIsThaana()
uCSIsThai()
uCSIsTibetan()
uCSIsUnifiedCanadianAboriginalSyllabics()
uCSIsYiRadicals()
uCSIsYiSyllables()

# 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()
    newNsPropEatName()
    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
    htmlDocContentDumpFormatOutput()
    htmlDocContentDumpOutput()
    htmlDocDump()
    htmlGetMetaEncoding()
    htmlNodeDumpFile()
    htmlNodeDumpFileFormat()
    htmlNodeDumpFormatOutput()
    htmlNodeDumpOutput()
    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()
    formatDump()
    freeDoc()
    getRootElement()
    intSubset()
    newCDataBlock()
    newCharRef()
    newDocComment()
    newDocFragment()
    newDocNode()
    newDocNodeEatName()
    newDocProp()
    newDocRawNode()
    newDocText()
    newDocTextLen()
    newDtd()
    newGlobalNs()
    newReference()
    nodeDumpOutput()
    saveFile()
    saveFileEnc()
    saveFileTo()
    saveFormatFile()
    saveFormatFileEnc()
    saveFormatFileTo()
    setDocCompressMode()
    stringGetNodeList()
    stringLenGetNodeList()

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

    # functions from module xinclude
    xincludeProcess()

    # functions from module xpath
    xpathNewContext()
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()


Class xmlAttribute(xmlNode)
Class catalog()

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


Class xmlElement(xmlNode)


Class xmlAttr(xmlNode)

    # functions from module debugXML
    debugDumpAttr()
    debugDumpAttrList()

    # functions from module tree
    freeProp()
    freePropList()
    removeProp()
Class xmlTextReader()

    # functions from module xmlreader
    AttributeCount()
    BaseUri()
    Close()
    CurrentDoc()
    CurrentNode()
    Depth()
    GetAttribute()
    GetAttributeNo()
    GetAttributeNs()
    GetParserProp()
    GetRemainder()
    HasAttributes()
    HasValue()
    IsDefault()
    IsEmptyElement()
    LocalName()
    LookupNamespace()
    MoveToAttribute()
    MoveToAttributeNo()
    MoveToAttributeNs()
    MoveToElement()
    MoveToFirstAttribute()
    MoveToNextAttribute()
    Name()
    NamespaceUri()
    NodeType()
    Normalization()
    Prefix()
    QuoteChar()
    Read()
    ReadAttributeValue()
    ReadInnerXml()
    ReadOuterXml()
    ReadState()
    ReadString()
    SetParserProp()
    Value()
    XmlLang()
    freeTextReader()
Class xmlReg()

    # functions from module xmlregexp
    regexpExec()
    regexpFreeRegexp()
    regexpIsDeterminist()
    regexpPrint()


Class xmlEntity(xmlNode)

    # functions from module parserInternals
    handleEntity()
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()
    xpathNotEqualValues()
    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()
    setupParserForBuffer()
    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 xmlDtd(xmlNode)

    # functions from module debugXML
    debugDumpDTD()

    # functions from module tree
    copyDtd()
    freeDtd()

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


Class xmlNs(xmlNode)

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

    # functions from module xpathInternals
    xpathNodeSetFreeNs()


Class inputBuffer(ioReadWrapper)

    # functions from module xmlIO
    freeParserInputBuffer()
    grow()
    push()
    read()

    # functions from module xmlreader
    newTextReader()


Class outputBuffer(ioWriteWrapper)

    # functions from module xmlIO
    close()
    flush()
    write()
    writeString()
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()
