          Generated Classes for libxml2-python

#
# Global functions of the module
#


# functions from module HTMLparser
htmlCreateMemoryParserCtxt()
htmlHandleOmittedElem()
htmlIsScriptAttribute()
htmlNewParserCtxt()
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()
initializeDict()

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

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

# functions from module xmlIO
checkFilename()
cleanupInputCallbacks()
cleanupOutputCallbacks()
fileMatch()
iOFTPMatch()
iOHTTPMatch()
normalizeWindowsPath()
parserGetDirectory()
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()
    firstElementChild()
    freeNode()
    freeNodeList()
    getBase()
    getContent()
    getLang()
    getSpacePreserve()
    hasNsProp()
    hasProp()
    isBlankNode()
    isText()
    lastChild()
    lastElementChild()
    lineNo()
    listGetRawString()
    listGetString()
    newChild()
    newNs()
    newNsProp()
    newNsPropEatName()
    newProp()
    newTextChild()
    nextElementSibling()
    noNsProp()
    nodePath()
    nsProp()
    previousElementSibling()
    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()
    xpathNodeEval()

    # 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()
    newEntity()
    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 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 xmlAttr(xmlNode)

    # functions from module debugXML
    debugDumpAttr()
    debugDumpAttrList()

    # functions from module tree
    copyProp()
    copyPropList()
    freeProp()
    freePropList()
    removeProp()

    # functions from module valid
    removeID()
    removeRef()


Class xmlAttribute(xmlNode)
Class catalog()

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


Class xmlDtd(xmlNode)

    # functions from module debugXML
    debugDumpDTD()

    # functions from module tree
    copyDtd()
    freeDtd()

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


Class xmlElement(xmlNode)


Class xmlEntity(xmlNode)

    # functions from module parserInternals
    handleEntity()
Class Error()
    # accessors
    code()
    domain()
    file()
    level()
    line()
    message()

    # functions from module xmlerror
    copyError()
    resetError()


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 outputBuffer(ioWriteWrapper)

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

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

    # functions from module xmlIO
    getContent()
    write()
    writeString()


Class inputBuffer(ioReadWrapper)

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

    # functions from module xmlreader
    Setup()
    newTextReader()
Class xmlReg()

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

    # functions from module relaxng
    relaxNGParse()
    relaxParserSetFlag()
Class relaxNgSchema()

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

    # functions from module xmlreader
    RelaxNGSetSchema()


Class relaxNgValidCtxt(relaxNgValidCtxtCore)

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

    # functions from module xmlreader
    RelaxNGValidateCtxt()
Class SchemaParserCtxt()

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

    # functions from module xmlreader
    SetSchema()

    # functions from module xmlschemas
    schemaDump()
    schemaNewValidCtxt()


Class SchemaValidCtxt(SchemaValidCtxtCore)

    # functions from module xmlreader
    SchemaValidateCtxt()

    # functions from module xmlschemas
    schemaIsValid()
    schemaSetValidOptions()
    schemaValidCtxtGetOptions()
    schemaValidCtxtGetParserCtxt()
    schemaValidateDoc()
    schemaValidateFile()
    schemaValidateOneElement()
    schemaValidateSetFilename()
Class xmlTextReaderLocator()

    # functions from module xmlreader
    BaseURI()
    LineNumber()


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()
    RelaxNGValidateCtxt()
    SchemaValidate()
    SchemaValidateCtxt()
    SetParserProp()
    SetSchema()
    Setup()
    Standalone()
    String()
    Value()
    XmlLang()
    XmlVersion()
Class URI()
    # accessors
    authority()
    fragment()
    opaque()
    path()
    port()
    query()
    queryRaw()
    scheme()
    server()
    setAuthority()
    setFragment()
    setOpaque()
    setPath()
    setPort()
    setQuery()
    setQueryRaw()
    setScheme()
    setServer()
    setUser()
    user()

    # functions from module uri
    parseURIReference()
    printURI()
    saveUri()


Class ValidCtxt(ValidCtxtCore)

    # functions from module valid
    validCtxtNormalizeAttributeValue()
    validateDocument()
    validateDocumentFinal()
    validateDtd()
    validateDtdFinal()
    validateElement()
    validateNotationUse()
    validateOneAttribute()
    validateOneElement()
    validateOneNamespace()
    validatePopElement()
    validatePushCData()
    validatePushElement()
    validateRoot()
Class xpathContext()
    # accessors
    contextDoc()
    contextNode()
    contextPosition()
    contextSize()
    function()
    functionURI()
    setContextDoc()
    setContextNode()

    # functions from module python
    registerXPathFunction()
    xpathRegisterVariable()

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