    >>> from owslib.csw import CatalogueServiceWeb
    >>> c = CatalogueServiceWeb('http://geomatics.nlr.nl/excat/csw')
    >>> print c.request
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <csw:GetCapabilities service="CSW" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ows:AcceptVersions xmlns:ows="http://www.opengis.net/ows"><ows:Version>2.0.2</ows:Version></ows:AcceptVersions><ows:AcceptFormats xmlns:ows="http://www.opengis.net/ows"><ows:OutputFormat>application/xml</ows:OutputFormat></ows:AcceptFormats></csw:GetCapabilities>
    >>> c.identification.title
    'NLR CSW'
    >>> c.identification.abstract
    '\n\t\t\tNLR CSW: XQuery based catalog service conform to the HTTP protocol binding \n of the OpenGIS Catalogue Service specification version 2.0.2/2.0.1\n\t\t'
    >>> c.identification.keywords
    ['CSW', 'geospatial', 'catalogue']
    >>> c.identification.fees    
    'NONE'
    >>> c.identification.accessconstraints
    'NONE'
    >>> c.identification.type             
    'CSW'
    >>> c.identification.version
    '2.0.2'
    >>> c.provider.name         
    'National Aerospace Laboratory NLR'
    >>> c.provider.site
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'ServiceProvider' object has no attribute 'site'
    >>> c.provider.url 
    'http://geomatics.nlr.nl/excat'
    >>> c.provider.uri
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'ServiceProvider' object has no attribute 'uri'
    >>> c.provider.contact.name
    'Rob van Swol'
    >>> c.provider.contact.position
    'Senior Scientist NLR-ASSP'
    >>> [op.name for op in c.operations]
    ['GetCapabilities', 'DescribeRecord', 'GetRecords', 'GetRecordById']
    >>> c.describerecord()
    >>> print c.request
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <csw:DescribeRecord outputFormat="application/xml" schemaLanguage="http://www.w3.org/XML/Schema" service="CSW" version="2.0.2" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><csw:TypeName>csw:Record</csw:TypeName></csw:DescribeRecord>
    >>> c.getdomain('GetRecords.outputSchema')
    >>> print c.request 
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <csw:GetDomain service="CSW" version="2.0.2" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><csw:ParameterName>GetRecords.outputSchema</csw:ParameterName></csw:GetDomain>
    >>> c.exceptionreport.exceptions
    [{'locator': 'request', 'ExceptionText': 'Operation not supported: GetDomain', 'exceptionCode': 'OperationNotSupported'}]
    >>> c.getrecords(keywords=['space'])
    >>> print c.request
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <csw:GetRecords maxRecords="10" outputFormat="application/xml" outputSchema="http://www.opengis.net/cat/csw/2.0.2" resultType="results" service="CSW" version="2.0.2" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><csw:Query typeNames="csw:Record"><csw:ElementSetName>full</csw:ElementSetName><csw:Constraint version="1.1.0"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsLike escapeChar="\" singleChar="_" wildCard="%"><ogc:PropertyName>csw:AnyText</ogc:PropertyName><ogc:Literal>%space%</ogc:Literal></ogc:PropertyIsLike></ogc:Filter></csw:Constraint></csw:Query></csw:GetRecords>
    >>> c.results['matches']
    80
    >>> c.results['returned']
    10
    >>> c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].title
    'CERISE: Computationally Efficient Radar Image Simulation Environment'
    >>> c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].abstract  
    'Microwave image simulation is an important tool in gaining\n   understanding in microwave imaging with air- or spaceborne sensors.\n   The package FEMIS was developed for this purpose in 1991. Its use was\n   limited due to software limitations (FORTRAN) and its being dependent\n   on a VAX computer and the IVAS image processing system. A new project\n   was proposed to upgrade FEMIS to: run on a PC, provide a user friendly\n   interface, provide links to a microwave backscatter data base, and a\n   Geographical Information System (GIS).\n\n   The new package that has now been developed is called CERISE. It is\n   programmed in C, runs on a PC in a window environment, and is able to\n   use data from a backscatter data base and a GIS (ARC-INFO) in a\n   semi-automatic manner. A start has been made with the inclusion of\n   radar image artefacts caused by varying terrain or object height and\n   the use of data from a DEM (Digital elevation model). Since the\n   project has stirred interest in the area of Defense, modifications\n   such as full DEM utilization and simulation of man-made objects are\n   being planned for the near future.\n\n   J.C.M. Kleijweg\n   M.P.G. Otten\n   TNO Physics and Electronics Laboratory'
    >>> c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].type    
    >>> c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].uri 
    >>> c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].subjects
    ['Technical report']
    >>> c.getrecordbyid([c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].identifier])
    >>> print c.request
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <csw:GetRecordById outputFormat="application/xml" outputSchema="http://www.opengis.net/cat/csw/2.0.2" service="CSW" version="2.0.2" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><csw:Id>DGFKRYMCWUZSCDRBWRXMIETZE</csw:Id><csw:ElementSetName>full</csw:ElementSetName></csw:GetRecordById>
    >>> c.records['DGFKRYMCWUZSCDRBWRXMIETZE'].title
    'CERISE: Computationally Efficient Radar Image Simulation Environment'
    >>> c.getrecords(cql='AnyText like \'%space%\'')
    >>> c.results
    {'matches': 80, 'nextrecord': 11, 'returned': 10}
