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

# 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()
    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 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()
    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 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()
    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()
    NewDoc()
    NewFd()
    NewFile()
    NewMemory()
    NewWalker()
    Next()
    NextSibling()
    NodeType()
    Normalization()
    Prefix()
    Preserve()
    QuoteChar()
    Read()
    ReadAttributeValue()
    ReadInnerXml()
    ReadOuterXml()
    ReadState()
    ReadString()
    RelaxNGSetSchema()
    RelaxNGValidate()
    SetParserProp()
    String()
    Value()
    XmlLang()
Class xmlReg()

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


Class xmlEntity(xmlNode)

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

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

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

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

    # functions from module xmlerror
    copyError()
    resetError()
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()
    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 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 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
    grow()
    push()
    read()

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

    # functions from module relaxng
    relaxNGParse()
    relaxParserSetFlag()


Class outputBuffer(ioWriteWrapper)

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

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

    # functions from module xmlIO
    write()
    writeString()
Class SchemaParserCtxt()

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

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