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

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

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

    # 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
    xpathContextSetCache()
    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()
    SchemaValidate()
    SchemaValidateCtxt()
    SetParserProp()
    SetSchema()
    Standalone()
    String()
    Value()
    XmlLang()
    XmlVersion()


Class xmlEntity(xmlNode)

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

    # functions from module xmlreader
    SetSchema()

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

    # functions from module xmlreader
    SchemaValidateCtxt()

    # functions from module xmlschemas
    schemaIsValid()
    schemaSetValidOptions()
    schemaValidCtxtGetOptions()
    schemaValidateDoc()
    schemaValidateFile()
    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()
