def loadSchema(uri, base_uri=None):
    """Load an XSD XML document (specified by filename or URL), and return a
    :class:`lxml.etree.XMLSchema`.
    """

    # uri to use for reporting errors - include base uri if any
    if uri in _loaded_schemas:
        return _loaded_schemas[uri]

    error_uri = uri
    if base_uri is not None:
        error_uri += ' (base URI %s)' % base_uri


    try:
        logger.debug('Loading schema %s' % uri)
        _loaded_schemas[uri] = etree.XMLSchema(etree.parse(uri,
                                                           parser=_get_xmlparser(),
                                                           base_url=base_uri))
        return _loaded_schemas[uri]
    except IOError as io_err:
        # add a little more detail to the error message - but should still be an IO error
        raise IOError('Failed to load schema %s : %s' % (error_uri, io_err))
    except etree.XMLSchemaParseError as parse_err:
        # re-raise as a schema parse error, but ensure includes details about schema being loaded
        raise etree.XMLSchemaParseError('Failed to parse schema %s -- %s' % (error_uri, parse_err))
def loadSchema ( uri , base_uri = None ) : if uri in _loaded_schemas : return _loaded_schemas [ uri ] error_uri = uri if base_uri is not None : error_uri += ' (base URI %s)' % base_uri try : logger . debug ( 'Loading schema %s' % uri ) _loaded_schemas [ uri ] = etree . XMLSchema ( etree . parse ( uri , parser = _get_xmlparser ( ) , base_url = base_uri ) ) return _loaded_schemas [ uri ] except IOError as io_err : raise IOError ( 'Failed to load schema %s : %s' % ( error_uri , io_err ) ) except etree . XMLSchemaParseError as parse_err : raise etree . XMLSchemaParseError ( 'Failed to parse schema %s -- %s' % ( error_uri , parse_err ) )
Load an XSD XML document (specified by filename or URL), and return a
    :class:`lxml.etree.XMLSchema`.