          Generated Classes for libxml2-python

#
# Global functions of the module
#


# functions from module HTMLparser
htmlCreateMemoryParserCtxt()
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 globals
cleanupGlobals()
initGlobals()
thrDefDefaultBufferSize()
thrDefDoValidityCheckingDefaultValue()
thrDefGetWarningsDefaultValue()
thrDefIndentTreeOutput()
thrDefKeepBlanksDefaultValue()
thrDefLineNumbersDefaultValue()
thrDefLoadExtDtdDefaultValue()
thrDefParserDebugEntities()
thrDefPedanticParserDefaultValue()
thrDefSaveNoEmptyTags()
thrDefSubstituteEntitiesDefaultValue()
thrDefTreeIndentString()

# 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()
setEntityLoader()

# functions from module relaxng
relaxNGCleanupTypes()
relaxNGNewMemParserCtxt()
relaxNGNewParserCtxt()

# functions from module tree
buildQName()
compressMode()
isXHTML()
newComment()
newDoc()
newPI()
newText()
newTextLen()
setCompressMode()
validateNCName()
validateNMToken()
validateName()
validateQName()

# functions from module uri
URIEscape()
URIEscapeStr()
URIUnescapeString()
buildURI()
canonicPath()
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 xmlschemastypes
schemaCleanupTypes()
schemaInitTypes()

# 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()
    noNsProp()
    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()

    # functions from module xpointer
    xpointerNewCollapsedRange()
    xpointerNewContext()
    xpointerNewLocationSetNodes()
    xpointerNewRange()
    xpointerNewRangeNodes()


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 relaxng
    relaxNGNewDocParserCtxt()
    relaxNGValidateDoc()
    relaxNGValidateFullElement()
    relaxNGValidatePopElement()
    relaxNGValidatePushElement()

    # functions from module tree
    copyDoc()
    copyNode()
    createIntSubset()
    docCompressMode()
    dump()
    elemDump()
    formatDump()
    freeDoc()
    getRootElement()
    intSubset()
    newCDataBlock()
    newCharRef()
    newDocComment()
    newDocFragment()
    newDocNode()
    newDocNodeEatName()
    newDocProp()
    newDocRawNode()
    newDocText()
    newDocTextLen()
    newDtd()
    newGlobalNs()
    newReference()
    nodeDumpOutput()
    nodeGetBase()
    nodeListGetRawString()
    nodeListGetString()
    reconciliateNs()
    saveFile()
    saveFileEnc()
    saveFileTo()
    saveFormatFile()
    saveFormatFileEnc()
    saveFormatFileTo()
    searchNs()
    searchNsByHref()
    setDocCompressMode()
    setListDoc()
    setRootElement()
    setTreeDoc()
    stringGetNodeList()
    stringLenGetNodeList()

    # functions from module valid
    ID()
    isID()
    isMixedElement()
    isRef()
    removeID()
    removeRef()
    validNormalizeAttributeValue()

    # functions from module xinclude
    xincludeProcess()

    # functions from module xpath
    xpathNewContext()
    xpathOrderDocElems()

    # functions from module xpointer
    xpointerNewContext()
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()

    # functions from module xpointer
    xpointerEval()


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
    copyProp()
    copyPropList()
    freeProp()
    freePropList()
    removeProp()

    # functions from module valid
    removeID()
    removeRef()


Class xmlTextReader(xmlTextReaderCore)

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

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


Class xmlEntity(xmlNode)

    # functions from module parserInternals
    handleEntity()
Class relaxNgSchema()

    # functions from module relaxng
    relaxNGDump()
    relaxNGDumpTree()
    relaxNGFree()
    relaxNGNewValidCtxt()

    # functions from module xmlreader
    RelaxNGSetSchema()
Class relaxNgValidCtxt()

    # functions from module relaxng
    relaxNGValidateDoc()
    relaxNGValidateFullElement()
    relaxNGValidatePopElement()
    relaxNGValidatePushCData()
    relaxNGValidatePushElement()
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()
    xpathNextAncestor()
    xpathNextAncestorOrSelf()
    xpathNextAttribute()
    xpathNextChild()
    xpathNextDescendant()
    xpathNextDescendantOrSelf()
    xpathNextFollowing()
    xpathNextFollowingSibling()
    xpathNextNamespace()
    xpathNextParent()
    xpathNextPreceding()
    xpathNextPrecedingSibling()
    xpathNextSelf()
    xpathNormalizeFunction()
    xpathNotEqualValues()
    xpathNotFunction()
    xpathNumberFunction()
    xpathParseNCName()
    xpathParseName()
    xpathPopBoolean()
    xpathPopNumber()
    xpathPopString()
    xpathPositionFunction()
    xpathRoot()
    xpathRoundFunction()
    xpathStartsWithFunction()
    xpathStringFunction()
    xpathStringLengthFunction()
    xpathSubValues()
    xpathSubstringAfterFunction()
    xpathSubstringBeforeFunction()
    xpathSubstringFunction()
    xpathSumFunction()
    xpathTranslateFunction()
    xpathTrueFunction()
    xpathValueFlipSign()
    xpatherror()

    # functions from module xpointer
    xpointerEvalRangePredicate()
    xpointerRangeToFunction()


Class parserCtxt(parserCtxtCore)
    # accessors
    doc()
    isValid()
    lineNumbers()
    loadSubset()
    pedantic()
    replaceEntities()
    validate()
    wellFormed()

    # functions from module HTMLparser
    htmlFreeParserCtxt()
    htmlParseCharRef()
    htmlParseChunk()
    htmlParseDocument()
    htmlParseElement()

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

    # functions from module parserInternals
    decodeEntities()
    handleEntity()
    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()
    newChild()
    newDocNode()
    newDocNodeEatName()
    newDocRawNode()
    newNodeEatName()
    newNsProp()
    newNsPropEatName()
    newTextChild()
    setNs()
    setNsProp()
    unsetNsProp()

    # functions from module xpathInternals
    xpathNodeSetFreeNs()


Class inputBuffer(ioReadWrapper)

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

    # functions from module xmlreader
    newTextReader()
Class relaxNgParserCtxt()

    # functions from module relaxng
    relaxNGFreeParserCtxt()
    relaxNGParse()


Class outputBuffer(ioWriteWrapper)

    # functions from module HTMLtree
    htmlDocContentDumpFormatOutput()
    htmlDocContentDumpOutput()
    htmlNodeDumpFormatOutput()
    htmlNodeDumpOutput()

    # functions from module tree
    nodeDumpOutput()
    saveFileTo()
    saveFormatFileTo()

    # functions from module xmlIO
    close()
    flush()
    write()
    writeString()
Class xmlTextReaderLocator()

    # functions from module xmlreader
    BaseURI()
    LineNumber()
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()
