          Generated Classes for libxml2-python

#
# Global functions of the module
#


# functions from module HTMLparser
htmlCreateMemoryParserCtxt()
htmlHandleOmittedElem()
htmlIsScriptAttribute()
htmlParseDoc()
htmlParseFile()
htmlReadDoc()
htmlReadFd()
htmlReadFile()
htmlReadMemory()

# functions from module HTMLtree
htmlIsBooleanAttr()
htmlNewDoc()
htmlNewDocNoDtD()

# functions from module SAX2
SAXDefaultVersion()
defaultSAXHandlerInit()
docbDefaultSAXHandlerInit()
htmlDefaultSAXHandlerInit()

# 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 chvalid
isBaseChar()
isBlank()
isChar()
isCombining()
isDigit()
isExtender()
isIdeographic()
isPubidChar()

# functions from module debugXML
boolToText()
debugDumpString()
shellPrintXPathError()

# functions from module dict
dictCleanup()

# functions from module encoding
addEncodingAlias()
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
createDocParserCtxt()
initParser()
keepBlanksDefault()
lineNumbersDefault()
newParserCtxt()
parseDTD()
parseDoc()
parseEntity()
parseFile()
parseMemory()
pedanticParserDefault()
readDoc()
readFd()
readFile()
readMemory()
recoverDoc()
recoverFile()
recoverMemory()
substituteEntitiesDefault()

# functions from module parserInternals
checkLanguageID()
copyChar()
copyCharMultiByte()
createEntityParserCtxt()
createFileParserCtxt()
createMemoryParserCtxt()
createURLParserCtxt()
htmlCreateFileParserCtxt()
htmlInitAutoClose()
isLetter()
namePop()
namePush()
nodePop()
nodePush()

# functions from module python
SAXParseFile()
createInputBuffer()
createOutputBuffer()
createPushParser()
debugMemory()
dumpMemory()
htmlCreatePushParser()
htmlSAXParseFile()
memoryUsed()
newNode()
pythonCleanupParser()
setEntityLoader()

# functions from module relaxng
relaxNGCleanupTypes()
relaxNGInitTypes()
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()
buildRelativeURI()
buildURI()
canonicPath()
createURI()
normalizeURIPath()
parseURI()

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

# functions from module xmlIO
checkFilename()
cleanupInputCallbacks()
cleanupOutputCallbacks()
fileMatch()
iOFTPMatch()
iOHTTPMatch()
normalizeWindowsPath()
parserGetDirectory()
popInputCallbacks()
registerDefaultInputCallbacks()
registerDefaultOutputCallbacks()
registerHTTPPostCallbacks()

# functions from module xmlerror
lastError()
resetLastError()

# functions from module xmlreader
newTextReaderFilename()
readerForDoc()
readerForFd()
readerForFile()
readerForMemory()

# functions from module xmlregexp
regexpCompile()

# functions from module xmlschemas
schemaNewMemParserCtxt()
schemaNewParserCtxt()

# functions from module xmlschemastypes
schemaCleanupTypes()
schemaCollapseString()
schemaInitTypes()
schemaWhiteSpaceReplace()

# functions from module xmlstring
UTF8Charcmp()
UTF8Size()
UTF8Strlen()
UTF8Strloc()
UTF8Strndup()
UTF8Strpos()
UTF8Strsize()
UTF8Strsub()
checkUTF8()

# functions from module xmlunicode
uCSIsAegeanNumbers()
uCSIsAlphabeticPresentationForms()
uCSIsArabic()
uCSIsArabicPresentationFormsA()
uCSIsArabicPresentationFormsB()
uCSIsArmenian()
uCSIsArrows()
uCSIsBasicLatin()
uCSIsBengali()
uCSIsBlock()
uCSIsBlockElements()
uCSIsBopomofo()
uCSIsBopomofoExtended()
uCSIsBoxDrawing()
uCSIsBraillePatterns()
uCSIsBuhid()
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()
uCSIsCombiningDiacriticalMarksforSymbols()
uCSIsCombiningHalfMarks()
uCSIsCombiningMarksforSymbols()
uCSIsControlPictures()
uCSIsCurrencySymbols()
uCSIsCypriotSyllabary()
uCSIsCyrillic()
uCSIsCyrillicSupplement()
uCSIsDeseret()
uCSIsDevanagari()
uCSIsDingbats()
uCSIsEnclosedAlphanumerics()
uCSIsEnclosedCJKLettersandMonths()
uCSIsEthiopic()
uCSIsGeneralPunctuation()
uCSIsGeometricShapes()
uCSIsGeorgian()
uCSIsGothic()
uCSIsGreek()
uCSIsGreekExtended()
uCSIsGreekandCoptic()
uCSIsGujarati()
uCSIsGurmukhi()
uCSIsHalfwidthandFullwidthForms()
uCSIsHangulCompatibilityJamo()
uCSIsHangulJamo()
uCSIsHangulSyllables()
uCSIsHanunoo()
uCSIsHebrew()
uCSIsHighPrivateUseSurrogates()
uCSIsHighSurrogates()
uCSIsHiragana()
uCSIsIPAExtensions()
uCSIsIdeographicDescriptionCharacters()
uCSIsKanbun()
uCSIsKangxiRadicals()
uCSIsKannada()
uCSIsKatakana()
uCSIsKatakanaPhoneticExtensions()
uCSIsKhmer()
uCSIsKhmerSymbols()
uCSIsLao()
uCSIsLatin1Supplement()
uCSIsLatinExtendedA()
uCSIsLatinExtendedAdditional()
uCSIsLatinExtendedB()
uCSIsLetterlikeSymbols()
uCSIsLimbu()
uCSIsLinearBIdeograms()
uCSIsLinearBSyllabary()
uCSIsLowSurrogates()
uCSIsMalayalam()
uCSIsMathematicalAlphanumericSymbols()
uCSIsMathematicalOperators()
uCSIsMiscellaneousMathematicalSymbolsA()
uCSIsMiscellaneousMathematicalSymbolsB()
uCSIsMiscellaneousSymbols()
uCSIsMiscellaneousSymbolsandArrows()
uCSIsMiscellaneousTechnical()
uCSIsMongolian()
uCSIsMusicalSymbols()
uCSIsMyanmar()
uCSIsNumberForms()
uCSIsOgham()
uCSIsOldItalic()
uCSIsOpticalCharacterRecognition()
uCSIsOriya()
uCSIsOsmanya()
uCSIsPhoneticExtensions()
uCSIsPrivateUse()
uCSIsPrivateUseArea()
uCSIsRunic()
uCSIsShavian()
uCSIsSinhala()
uCSIsSmallFormVariants()
uCSIsSpacingModifierLetters()
uCSIsSpecials()
uCSIsSuperscriptsandSubscripts()
uCSIsSupplementalArrowsA()
uCSIsSupplementalArrowsB()
uCSIsSupplementalMathematicalOperators()
uCSIsSupplementaryPrivateUseAreaA()
uCSIsSupplementaryPrivateUseAreaB()
uCSIsSyriac()
uCSIsTagalog()
uCSIsTagbanwa()
uCSIsTags()
uCSIsTaiLe()
uCSIsTaiXuanJingSymbols()
uCSIsTamil()
uCSIsTelugu()
uCSIsThaana()
uCSIsThai()
uCSIsTibetan()
uCSIsUgaritic()
uCSIsUnifiedCanadianAboriginalSyllabics()
uCSIsVariationSelectors()
uCSIsVariationSelectorsSupplement()
uCSIsYiRadicals()
uCSIsYiSyllables()
uCSIsYijingHexagramSymbols()

# 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()
    docCopyNodeList()
    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 xinclude
    xincludeProcessTree()
    xincludeProcessTreeFlags()

    # functions from module xmlschemas
    schemaValidateOneElement()

    # 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
    debugCheckDocument()
    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()
    copyNodeList()
    createIntSubset()
    docCompressMode()
    dump()
    elemDump()
    formatDump()
    freeDoc()
    getRootElement()
    intSubset()
    newCDataBlock()
    newCharRef()
    newDocComment()
    newDocFragment()
    newDocNode()
    newDocNodeEatName()
    newDocPI()
    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()
    validCtxtNormalizeAttributeValue()
    validNormalizeAttributeValue()
    validateDocument()
    validateDocumentFinal()
    validateDtd()
    validateDtdFinal()
    validateElement()
    validateNotationUse()
    validateOneAttribute()
    validateOneElement()
    validateOneNamespace()
    validatePopElement()
    validatePushElement()
    validateRoot()

    # functions from module xinclude
    xincludeProcess()
    xincludeProcessFlags()

    # functions from module xmlreader
    NewWalker()
    readerWalker()

    # functions from module xmlschemas
    schemaNewDocParserCtxt()
    schemaValidateDoc()

    # functions from module xpath
    xpathNewContext()
    xpathOrderDocElems()

    # functions from module xpointer
    xpointerNewContext()


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 xmlReg()

    # functions from module xmlregexp
    regexpExec()
    regexpIsDeterminist()
    regexpPrint()
Class relaxNgValidCtxt()

    # functions from module relaxng
    relaxNGValidateDoc()
    relaxNGValidateFullElement()
    relaxNGValidatePopElement()
    relaxNGValidatePushCData()
    relaxNGValidatePushElement()


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

    # functions from module HTMLparser
    htmlCtxtReadDoc()
    htmlCtxtReadFd()
    htmlCtxtReadFile()
    htmlCtxtReadMemory()
    htmlCtxtReset()
    htmlCtxtUseOptions()
    htmlFreeParserCtxt()
    htmlParseCharRef()
    htmlParseChunk()
    htmlParseDocument()
    htmlParseElement()

    # functions from module parser
    byteConsumed()
    clearParserCtxt()
    ctxtReadDoc()
    ctxtReadFd()
    ctxtReadFile()
    ctxtReadMemory()
    ctxtReset()
    ctxtResetPush()
    ctxtUseOptions()
    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()
    stringLenDecodeEntities()


Class xmlDtd(xmlNode)

    # functions from module debugXML
    debugDumpDTD()

    # functions from module tree
    copyDtd()
    freeDtd()

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

    # functions from module relaxng
    relaxNGParse()
    relaxParserSetFlag()
Class xpathParserContext()
    # accessors
    context()

    # functions from module xpathInternals
    xpathAddValues()
    xpathBooleanFunction()
    xpathCeilingFunction()
    xpathCompareValues()
    xpathConcatFunction()
    xpathContainsFunction()
    xpathCountFunction()
    xpathDivValues()
    xpathEqualValues()
    xpathErr()
    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 SchemaParserCtxt()

    # functions from module xmlschemas
    schemaParse()
Class ValidCtxt()

    # functions from module valid
    validCtxtNormalizeAttributeValue()
    validateDocument()
    validateDocumentFinal()
    validateDtd()
    validateDtdFinal()
    validateElement()
    validateNotationUse()
    validateOneAttribute()
    validateOneElement()
    validateOneNamespace()
    validatePopElement()
    validatePushCData()
    validatePushElement()
    validateRoot()


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 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
    parseURIReference()
    printURI()
    saveUri()


Class xmlAttribute(xmlNode)
Class catalog()

    # functions from module catalog
    add()
    catalogIsEmpty()
    convertSGMLCatalog()
    dump()
    remove()
    resolve()
    resolvePublic()
    resolveSystem()
    resolveURI()
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 xmlElement(xmlNode)


Class xmlTextReader(xmlTextReaderCore)

    # functions from module xmlreader
    AttributeCount()
    BaseUri()
    ByteConsumed()
    Close()
    CurrentDoc()
    CurrentNode()
    Depth()
    Encoding()
    Expand()
    GetAttribute()
    GetAttributeNo()
    GetAttributeNs()
    GetParserColumnNumber()
    GetParserLineNumber()
    GetParserProp()
    GetRemainder()
    HasAttributes()
    HasValue()
    IsDefault()
    IsEmptyElement()
    IsNamespaceDecl()
    IsValid()
    LocalName()
    LookupNamespace()
    MoveToAttribute()
    MoveToAttributeNo()
    MoveToAttributeNs()
    MoveToElement()
    MoveToFirstAttribute()
    MoveToNextAttribute()
    Name()
    NamespaceUri()
    NewDoc()
    NewFd()
    NewFile()
    NewMemory()
    NewWalker()
    Next()
    NextSibling()
    NodeType()
    Normalization()
    Prefix()
    Preserve()
    QuoteChar()
    Read()
    ReadAttributeValue()
    ReadInnerXml()
    ReadOuterXml()
    ReadState()
    ReadString()
    RelaxNGSetSchema()
    RelaxNGValidate()
    SetParserProp()
    Standalone()
    String()
    Value()
    XmlLang()
    XmlVersion()


Class xmlEntity(xmlNode)

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

    # functions from module xmlschemas
    schemaDump()
    schemaNewValidCtxt()
Class Error()
    # accessors
    code()
    domain()
    file()
    level()
    line()
    message()

    # functions from module xmlerror
    copyError()
    resetError()
Class relaxNgSchema()

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

    # functions from module xmlreader
    RelaxNGSetSchema()


Class inputBuffer(ioReadWrapper)

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

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

    # functions from module xmlschemas
    schemaSetValidOptions()
    schemaValidCtxtGetOptions()
    schemaValidateDoc()
    schemaValidateOneElement()


Class outputBuffer(ioWriteWrapper)

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

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

    # functions from module xmlIO
    write()
    writeString()
