[pycsw] 01/03: Imported Upstream version 1.10.1+dfsg

Johan Van de Wauw johanvdw-guest at moszumanska.debian.org
Tue Jan 20 20:36:55 UTC 2015


This is an automated email from the git hooks/post-receive script.

johanvdw-guest pushed a commit to branch master
in repository pycsw.

commit 3de4d0bf25846888fa7801e3d420bf54d02a8e67
Author: Johan Van de Wauw <johan.vandewauw at gmail.com>
Date:   Tue Jan 20 20:54:10 2015 +0100

    Imported Upstream version 1.10.1+dfsg
---
 VERSION.txt                                        |  2 +-
 bin/pycsw-admin.py                                 | 40 ++++++++--
 docs/administration.rst                            |  9 +++
 docs/configuration.rst                             | 20 ++++-
 pycsw/__init__.py                                  |  2 +-
 pycsw/admin.py                                     | 22 +++++-
 pycsw/config.py                                    |  3 +-
 pycsw/gml.py                                       |  2 +-
 pycsw/metadata.py                                  | 21 +++++-
 pycsw/plugins/profiles/apiso/apiso.py              |  2 +
 pycsw/plugins/profiles/ebrim/ebrim.py              |  8 +-
 pycsw/server.py                                    | 87 +++++++++++++++++-----
 ...ites_apiso-inspire_get_GetCapabilities-lang.xml |  1 +
 .../suites_apiso-inspire_get_GetCapabilities.xml   |  1 +
 .../expected/suites_apiso_post_GetCapabilities.xml |  1 +
 ...uites_atom_get_opensearch-ogc-bbox-and-time.xml |  2 +-
 .../suites_atom_get_opensearch-ogc-bbox.xml        |  2 +-
 .../suites_atom_get_opensearch-ogc-q-and-time.xml  |  4 +-
 .../suites_atom_get_opensearch-ogc-time.xml        |  4 +-
 .../suites_atom_get_opensearch-ogc-timeend.xml     |  4 +-
 .../suites_atom_get_opensearch-ogc-timestart.xml   |  2 +-
 tests/expected/suites_atom_get_opensearch.xml      |  2 +-
 .../expected/suites_atom_post_GetCapabilities.xml  |  1 +
 .../suites_atom_post_GetRecords-filter-bbox.xml    |  2 +-
 ...te_get_27e17158-c57a-4493-92ac-dba8934cf462.xml |  1 +
 ...te_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml |  1 +
 ...te_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml |  2 +-
 ...te_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml |  1 +
 ...te_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml |  1 +
 ...te_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml |  1 +
 ...te_get_80f31def-4185-48b9-983a-960566918eae.xml |  1 +
 ...te_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml |  1 +
 ...te_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml |  4 +-
 ...te_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml |  1 +
 ...te_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml |  1 +
 ...e_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml |  2 +-
 ...e_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml |  2 +-
 ...e_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml |  2 +-
 ...e_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml |  2 +-
 ...e_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml |  2 +-
 ...e_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml |  6 +-
 ...e_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml |  2 +-
 ...e_post_e308f030-c097-4036-a838-44bad74c9ef7.xml |  2 +-
 ...e_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml |  2 +-
 ...e_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml |  2 +-
 ...e_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml |  2 +-
 .../suites_default_get_GetCapabilities.xml         |  1 +
 .../suites_default_get_GetRecords-sortby-asc.xml   |  4 +-
 .../suites_default_get_GetRecords-sortby-desc.xml  |  6 +-
 .../suites_default_post_GetCapabilities-SOAP.xml   |  1 +
 ...default_post_GetCapabilities-updatesequence.xml |  1 +
 .../suites_default_post_GetCapabilities.xml        |  1 +
 .../suites_default_post_GetDomain-property.xml     |  4 +-
 ...tes_default_post_GetRecords-all-sortby-bbox.xml |  2 +-
 ..._default_post_GetRecords-bbox-filter-crs84.xml} | 13 +++-
 .../suites_default_post_GetRecords-end.xml         |  4 +-
 ...fault_post_GetRecords-filter-bbox-reproject.xml |  2 +-
 ..._default_post_GetRecords-filter-bbox-sortby.xml |  2 +-
 .../suites_default_post_GetRecords-filter-bbox.xml |  2 +-
 ...ites_default_post_GetRecords-filter-between.xml |  4 +-
 ...ult_post_GetRecords-filter-or-bbox-freetext.xml |  2 +-
 ...efault_post_GetRecords-filter-or-nested-and.xml |  2 +-
 tests/expected/suites_dif_post_GetCapabilities.xml |  1 +
 .../suites_dif_post_GetRecords-filter-bbox.xml     |  2 +-
 .../expected/suites_ebrim_post_GetCapabilities.xml |  1 +
 ...ites_ebrim_post_GetRecords-filter-bbox-full.xml | 57 ++++++++++++++
 .../expected/suites_fgdc_post_GetCapabilities.xml  |  1 +
 .../suites_fgdc_post_GetRecords-filter-bbox.xml    |  2 +-
 .../suites_harvesting_post_GetCapabilities.xml     |  1 +
 ...=> suites_harvesting_post_Harvest-csw-run1.xml} |  4 +-
 ...=> suites_harvesting_post_Harvest-csw-run2.xml} | 10 +--
 .../suites_harvesting_post_Harvest-iso.xml         |  2 +-
 ...=> suites_harvesting_post_Harvest-wms-run1.xml} | 40 ++--------
 ...=> suites_harvesting_post_Harvest-wms-run2.xml} | 10 +--
 ...t_Harvest-zzz-post-GetRecords-filter-wms-dc.xml | 30 +++-----
 ...arvest-zzz-post-GetRecords-filter-wms-layer.xml | 38 +++++-----
 ..._harvesting_post_Transaction-000-delete-all.xml |  2 +-
 .../suites_manager_post_GetCapabilities.xml        |  1 +
 .../expected/suites_oaipmh_get_ListRecords_dc.xml  |  2 +-
 .../suites_oaipmh_get_ListRecords_iso19139.xml     |  8 +-
 .../suites_oaipmh_get_ListRecords_oai_dc.xml       |  2 +-
 .../suites_repofilter_post_GetRecords-all.xml      |  2 +-
 .../expected/suites_utf-8_post_GetCapabilities.xml |  3 +-
 tests/index.html                                   |  8 +-
 tests/suites/cite/default.cfg                      |  2 +-
 .../default/post/GetRecords-bbox-filter-crs84.xml  | 17 +++++
 .../ebrim/post/GetRecords-filter-bbox-full.xml     | 17 +++++
 .../post/{Harvest-csw.xml => Harvest-csw-run1.xml} |  0
 .../post/{Harvest-csw.xml => Harvest-csw-run2.xml} |  0
 .../post/{Harvest-wms.xml => Harvest-wms-run1.xml} |  2 +-
 .../post/{Harvest-wms.xml => Harvest-wms-run2.xml} |  2 +-
 ...arvest-zzz-post-GetRecords-filter-wms-layer.xml |  2 +-
 92 files changed, 415 insertions(+), 190 deletions(-)

diff --git a/VERSION.txt b/VERSION.txt
index 81c871d..4dae298 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-1.10.0
+1.10.1
diff --git a/bin/pycsw-admin.py b/bin/pycsw-admin.py
index cff340d..26d8dda 100755
--- a/bin/pycsw-admin.py
+++ b/bin/pycsw-admin.py
@@ -64,6 +64,7 @@ SYNOPSIS
               - post_xml
               - get_sysprof
               - validate_xml
+              - delete_records
 
     -f    Filepath to pycsw configuration
 
@@ -82,7 +83,10 @@ SYNOPSIS
     -u    URL of CSW
 
     -x    XML document
-    
+
+    -y    force confirmation
+
+
 EXAMPLES
 
     1.) setup_db: Creates repository tables and indexes
@@ -97,6 +101,10 @@ EXAMPLES
 
         pycsw-admin.py -c load_records -p /path/to/records -f default.cfg -r
 
+        Load records from directory and force updates
+
+        pycsw-admin.py -c load_records -p /path/to/records -f default.cfg -y
+
     3.) export_records: Dump metadata records from repository into directory
 
         pycsw-admin.py -c export_records -p /path/to/records -f default.cfg
@@ -130,6 +138,14 @@ EXAMPLES
 
         pycsw-admin.py -c validate_xml -x file.xml -s file.xsd
 
+   11.) delete_records: Deletes all records from repository
+
+        pycsw-admin.py -c delete_records -f default.cfg
+
+   12.) delete_records: Deletes all records from repository without prompting
+
+        pycsw-admin.py -c delete_records -f default.cfg -y
+
 '''
 
 COMMAND = None
@@ -141,13 +157,14 @@ CSW_URL = None
 XML = None
 XSD = None
 TIMEOUT = 30
+FORCE_CONFIRM = False
 
 if len(sys.argv) == 1:
     print usage()
     sys.exit(1)
 
 try:
-    OPTS, ARGS = getopt.getopt(sys.argv[1:], 'c:f:ho:p:ru:x:s:t:')
+    OPTS, ARGS = getopt.getopt(sys.argv[1:], 'c:f:ho:p:ru:x:s:t:y')
 except getopt.GetoptError, err:
     print '\nERROR: %s' % err
     print usage()
@@ -175,6 +192,8 @@ for o, a in OPTS:
     if o == '-h':  # dump help and exit
         print usage()
         sys.exit(3)
+    if o == '-y':
+        FORCE_CONFIRM = True
 
 if COMMAND is None:
     print '-c <command> is a required argument'
@@ -184,7 +203,7 @@ if COMMAND not in ['setup_db', 'load_records', 'export_records',
                    'rebuild_db_indexes', 'optimize_db',
                    'refresh_harvested_records', 'gen_sitemap',
                    'post_xml', 'get_sysprof',
-                   'validate_xml']:
+                   'validate_xml', 'delete_records']:
     print 'ERROR: invalid command name: %s' % COMMAND
     sys.exit(5)
 
@@ -229,9 +248,14 @@ elif COMMAND == 'validate_xml':
         sys.exit(12)
 
 if COMMAND == 'setup_db':
-    admin.setup_db(DATABASE, TABLE, HOME)
+    try:
+        admin.setup_db(DATABASE, TABLE, HOME)
+    except Exception, err:
+        print err
+        print 'ERROR: DB creation error.  Database tables already exist'
+        print 'Delete tables or database to reinitialize'
 elif COMMAND == 'load_records':
-    admin.load_records(CONTEXT, DATABASE, TABLE, XML_DIRPATH, RECURSIVE)
+    admin.load_records(CONTEXT, DATABASE, TABLE, XML_DIRPATH, RECURSIVE, FORCE_CONFIRM)
 elif COMMAND == 'export_records':
     admin.export_records(CONTEXT, DATABASE, TABLE, XML_DIRPATH)
 elif COMMAND == 'rebuild_db_indexes':
@@ -248,5 +272,11 @@ elif COMMAND == 'get_sysprof':
     print admin.get_sysprof()
 elif COMMAND == 'validate_xml':
     admin.validate_xml(XML, XSD)
+elif COMMAND == 'delete_records':
+    if not FORCE_CONFIRM:
+        if raw_input('This will delete all records! Continue? [Y/n] ') == 'Y':
+            FORCE_CONFIRM = True
+    if FORCE_CONFIRM:
+        admin.delete_records(CONTEXT, DATABASE, TABLE)
 
 print 'Done'
diff --git a/docs/administration.rst b/docs/administration.rst
index 3ea9591..573b74a 100644
--- a/docs/administration.rst
+++ b/docs/administration.rst
@@ -98,6 +98,15 @@ Optimizing the Database
 .. note::
   This feature is relevant only for PostgreSQL and MySQL
 
+Deleting Records from the Repository
+------------------------------------
+
+.. code-block:: bash
+
+  $ pycsw-admin.py -c delete_records -f default.cfg
+
+This will empty the repository of all records.
+
 Database Specific Notes
 -----------------------
 
diff --git a/docs/configuration.rst b/docs/configuration.rst
index 85f44ff..d4f3463 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -11,8 +11,8 @@ pycsw's runtime configuration is defined by ``default.cfg``.  pycsw ships with a
 - **url**: the URL of the resulting service
 - **mimetype**: the MIME type when returning HTTP responses
 - **language**: the ISO 639-1 language and ISO 3166-1 alpha2 country code of the service (e.g. ``en-CA``, ``fr-CA``, ``en-US``)
-- **encoding**: the content type encoding (e.g. ``ISO-8859-1``)
-- **maxrecords**: the maximum number of records to return by default.  This value is enforced if a CSW's client's ``maxRecords`` parameter is greater than ``server.maxrecords`` to limit capacity
+- **encoding**: the content type encoding (e.g. ``ISO-8859-1``, see https://docs.python.org/2/library/codecs.html#standard-encodings).  Default value is 'UTF-8'
+- **maxrecords**: the maximum number of records to return by default.  This value is enforced if a CSW's client's ``maxRecords`` parameter is greater than ``server.maxrecords`` to limit capacity.  See :ref:`maxrecords-handling` for more information
 - **loglevel**: the logging level (see http://docs.python.org/library/logging.html#logging-levels)
 - **logfile**: the full file path to the logfile
 - **ogc_schemas_base**: base URL of OGC XML schemas tree file structure (default is http://schemas.opengis.net)
@@ -68,6 +68,22 @@ pycsw's runtime configuration is defined by ``default.cfg``.  pycsw ships with a
 
   See :ref:`administration` for connecting your metadata repository and supported information models.
 
+.. _maxrecords-handling:
+
+MaxRecords Handling
+--------------------------
+
+The The following describes how ``maxRecords`` is handled by the configuration when handling ``GetRecords`` requests:
+
+.. csv-table::
+  :header: server.maxrecords,GetRecords.maxRecords,Result
+
+  none set,none passed,10 (CSW default)
+  20,14,20
+  20,none passed,20
+  none set,100,100
+  20,200,20
+
 .. _alternate-configurations:
 
 Alternate Configurations
diff --git a/pycsw/__init__.py b/pycsw/__init__.py
index 79ffc47..fc5d015 100644
--- a/pycsw/__init__.py
+++ b/pycsw/__init__.py
@@ -28,4 +28,4 @@
 #
 # =================================================================
 
-__version__ = '1.10.0'
+__version__ = '1.10.1'
diff --git a/pycsw/admin.py b/pycsw/admin.py
index f8f1231..078e197 100644
--- a/pycsw/admin.py
+++ b/pycsw/admin.py
@@ -306,7 +306,7 @@ FOR EACH ROW EXECUTE PROCEDURE %(table)s_update_geometry();
         conn.execute(create_insert_update_trigger_sql)
         conn.execute(create_spatial_index_sql)
 
-def load_records(context, database, table, xml_dirpath, recursive=False):
+def load_records(context, database, table, xml_dirpath, recursive=False, force_update=False):
     """Load metadata records from directory of files to database"""
     repo = repository.Repository(database, context, table=table)
 
@@ -344,8 +344,13 @@ def load_records(context, database, table, xml_dirpath, recursive=False):
             try:
                 repo.insert(rec, 'local', util.get_today_and_now())
                 LOGGER.info('Inserted')
-            except Exception, err:
-                LOGGER.warn('ERROR: not inserted %s', err)
+            except RuntimeError, err:
+                if force_update:
+                    LOGGER.info('Record exists. Updating.')
+                    repo.update(rec)
+                    LOGGER.info('Updated')
+                else:
+                    LOGGER.warn('ERROR: not inserted %s', err)
 
 
 def export_records(context, database, table, xml_dirpath):
@@ -398,7 +403,7 @@ def refresh_harvested_records(context, database, table, url):
     repos = repository.Repository(database, context, table=table)
 
     # get all harvested records
-    count, records = repos.query(constraint={'where': 'source != "local"'})
+    count, records = repos.query(constraint={'where': 'mdsource != "local"', 'values': []})
 
     if int(count) > 0:
         LOGGER.info('Refreshing %s harvested records', count)
@@ -558,3 +563,12 @@ def validate_xml(xml, xsd):
         return 'Valid'
     except Exception, err:
         raise RuntimeError('ERROR: %s' % str(err))
+
+
+def delete_records(context, database, table):
+    """Deletes all records from repository"""
+
+    LOGGER.info('Deleting all records')
+    
+    repo = repository.Repository(database, context, table=table)
+    repo.delete(constraint={'where': '', 'values': []})
diff --git a/pycsw/config.py b/pycsw/config.py
index b9f9aef..80ca43e 100644
--- a/pycsw/config.py
+++ b/pycsw/config.py
@@ -163,7 +163,8 @@ class StaticContext(object):
                     'parameters': {
                         'schemaLanguage': {
                             'values': ['http://www.w3.org/XML/Schema',
-                            'http://www.w3.org/TR/xmlschema-1/']
+                                       'http://www.w3.org/TR/xmlschema-1/',
+                                       'http://www.w3.org/2001/XMLSchema']
                         },
                         'typeName': {
                             'values': ['csw:Record']
diff --git a/pycsw/gml.py b/pycsw/gml.py
index b1156fa..06cec8f 100644
--- a/pycsw/gml.py
+++ b/pycsw/gml.py
@@ -98,7 +98,7 @@ class Geometry(object):
                                % ','.join(TYPES))
 
         # reproject data if needed
-        if self.crs is not None and self.crs.code != 4326:
+        if self.crs is not None and self.crs.code not in [4326, 'CRS84']:
             LOGGER.debug('transforming geometry to 4326')
             try:
                 self.wkt = self.transform(self.crs.code, DEFAULT_SRS.code)
diff --git a/pycsw/metadata.py b/pycsw/metadata.py
index 4bca386..6810d4e 100644
--- a/pycsw/metadata.py
+++ b/pycsw/metadata.py
@@ -213,7 +213,7 @@ def _parse_csw(context, repos, record, identifier, pagesize=10):
     LOGGER.debug('Harvesting %d CSW records' % matches)
 
     # loop over all catalogue records incrementally
-    for r in range(1, matches, pagesize):
+    for r in range(1, matches+1, pagesize):
         try:
             md.getrecords2(typenames=csw_typenames, startposition=r,
                            maxrecords=pagesize, outputschema=csw_outputschema, esn='full')
@@ -704,8 +704,23 @@ def _parse_sos(context, repos, record, identifier, version):
         _set(context, recobj, 'pycsw:TempExtent_begin', util.datetime2iso8601(md.contents[offering].begin_position))
         _set(context, recobj, 'pycsw:TempExtent_end', util.datetime2iso8601(md.contents[offering].end_position))
 
-        _set(context, recobj, 'pycsw:AnyText',
-             util.get_anytext([md.contents[offering].description]))
+        #For observed_properties that have mmi url or urn, we simply want the observation name.
+        observed_properties = []
+        for obs in md.contents[offering].observed_properties:
+          #Observation is stored as urn representation: urn:ogc:def:phenomenon:mmisw.org:cf:sea_water_salinity
+          if obs.lower().startswith(('urn:', 'x-urn')):
+            observed_properties.append(obs.rsplit(':', 1)[-1])
+          #Observation is stored as uri representation: http://mmisw.org/ont/cf/parameter/sea_floor_depth_below_sea_surface
+          elif obs.lower().startswith(('http://', 'https://')):
+            observed_properties.append(obs.rsplit('/', 1)[-1])
+          else:
+            observed_properties.append(obs)
+        #Build anytext from description and the observed_properties.
+        anytext = []
+        anytext.append(md.contents[offering].description)
+        anytext.extend(observed_properties)
+        _set(context, recobj, 'pycsw:AnyText', util.get_anytext(anytext))
+        _set(context, recobj, 'pycsw:Keywords', ','.join(observed_properties))
 
         bbox = md.contents[offering].bbox
         if bbox is not None:
diff --git a/pycsw/plugins/profiles/apiso/apiso.py b/pycsw/plugins/profiles/apiso/apiso.py
index 312d6c9..ef18307 100644
--- a/pycsw/plugins/profiles/apiso/apiso.py
+++ b/pycsw/plugins/profiles/apiso/apiso.py
@@ -405,6 +405,8 @@ class APISO(profile.Profile):
         mtype = util.getqattr(result, queryables['apiso:Type']['dbcol']) or None
 
         if mtype is not None: 
+            if mtype == 'http://purl.org/dc/dcmitype/Dataset':
+                mtype = 'dataset'
             hierarchy = etree.SubElement(node, util.nspath_eval('gmd:hierarchyLevel', self.namespaces))
             hierarchy.append(_write_codelist_element('gmd:MD_ScopeCode', mtype, self.namespaces))
 
diff --git a/pycsw/plugins/profiles/ebrim/ebrim.py b/pycsw/plugins/profiles/ebrim/ebrim.py
index b2a1e54..3c5dd05 100644
--- a/pycsw/plugins/profiles/ebrim/ebrim.py
+++ b/pycsw/plugins/profiles/ebrim/ebrim.py
@@ -140,17 +140,17 @@ class EBRIM(profile.Profile):
 
         etree.SubElement(node, util.nspath_eval('rim:VersionInfo', self.namespaces), versionName='')
 
-        if esn == 'summary':
+        if esn in ['summary', 'full']:
             etree.SubElement(node, util.nspath_eval('rim:ExternalIdentifier', self.namespaces), value=identifier, identificationScheme='foo', registryObject=str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Relation'])), id=identifier)
 
             name = etree.SubElement(node, util.nspath_eval('rim:Name', self.namespaces))
-            etree.SubElement(name, util.nspath_eval('rim:LocalizedString', self.namespaces), value=unicode(util.getqattr(result, queryables['pycsw:Title']['dbcol'])))
+            etree.SubElement(name, util.nspath_eval('rim:LocalizedString', self.namespaces), value=unicode(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Title'])))
 
             description = etree.SubElement(node, util.nspath_eval('rim:Description', self.namespaces))
-            etree.SubElement(description, util.nspath_eval('rim:LocalizedString', self.namespaces), value=unicode(util.getqattr(result, queryables['pycsw:Abstract']['dbcol'])))
+            etree.SubElement(description, util.nspath_eval('rim:LocalizedString', self.namespaces), value=unicode(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Abstract'])))
 
             val = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:BoundingBox'])
-            bboxel = server.write_boundingbox(val)
+            bboxel = server.write_boundingbox(val, self.context.namespaces)
 
             if bboxel is not None:
                 bboxslot = etree.SubElement(node, util.nspath_eval('rim:Slot', self.namespaces),
diff --git a/pycsw/server.py b/pycsw/server.py
index f078e5e..7368364 100644
--- a/pycsw/server.py
+++ b/pycsw/server.py
@@ -1232,8 +1232,20 @@ class Csw(object):
         if self.kvp['resulttype'] == 'validate':
             return self._write_acknowledgement()
 
-        if 'maxrecords' not in self.kvp:
-            self.kvp['maxrecords'] = int(self.config.get('server', 'maxrecords'))
+        maxrecords_cfg = -1  # not set in config server.maxrecords
+
+        if self.config.has_option('server', 'maxrecords'):
+            maxrecords_cfg = int(self.config.get('server', 'maxrecords'))
+
+        if 'maxrecords' not in self.kvp:  # not specified by client
+            if maxrecords_cfg > -1:  # specified in config
+                self.kvp['maxrecords'] = maxrecords_cfg
+            else:  # spec default
+                self.kvp['maxrecords'] = 10
+        else:  # specified by client
+            if maxrecords_cfg > -1:  # set in config
+                if int(self.kvp['maxrecords']) > maxrecords_cfg:
+                    self.kvp['maxrecords'] = maxrecords_cfg
 
         if any(x in ['bbox', 'q', 'time'] for x in self.kvp):
             LOGGER.debug('OpenSearch Geo/Time parameters detected.')
@@ -1356,6 +1368,7 @@ class Csw(object):
             self.kvp['hopcount'])
 
             from owslib.csw import CatalogueServiceWeb
+            from owslib.ows import ExceptionReport
             for fedcat in \
             self.config.get('server', 'federatedcatalogues').split(','):
                 LOGGER.debug('Performing distributed search on federated \
@@ -1377,11 +1390,15 @@ class Csw(object):
                             (remotecsw_matches, plural, fedcat)))
 
                             dsresults.append(remotecsw.records)
-
+                except ExceptionReport, err:
+                    error_string = 'remote CSW %s returned exception: ' % fedcat
+                    dsresults.append(etree.Comment(
+                    ' %s\n\n%s ' % (error_string, err)))
+                    LOGGER.debug(str(err))
                 except Exception, err:
                     error_string = 'remote CSW %s returned error: ' % fedcat
                     dsresults.append(etree.Comment(
-                    ' %s\n\n%s ' % (error_string, remotecsw.response)))
+                    ' %s\n\n%s ' % (error_string, err)))
                     LOGGER.debug(str(err))
 
         if int(matched) == 0:
@@ -1739,6 +1756,10 @@ class Csw(object):
     def harvest(self):
         ''' Handle Harvest request '''
 
+        service_identifier = None
+        old_identifier = None
+        deleted = []
+
         try:
             self._test_manager()
         except Exception, err:
@@ -1780,9 +1801,13 @@ class Csw(object):
             LOGGER.debug('checking if service exists (%s)' % content)
             results = self.repository.query_source(content)
 
-            if len(results) > 0:  # exists, don't insert
-                return self.exceptionreport('NoApplicableCode', 'source',
-                'Insert failed: service %s already in repository' % content)
+            if len(results) > 0:  # exists, keep identifier for update
+                LOGGER.debug('Service already exists, keeping identifier and results')
+                service_identifier = results[0].identifier
+                service_results = results
+                LOGGER.debug('Identifier is %s' % service_identifier)
+            #    return self.exceptionreport('NoApplicableCode', 'source',
+            #    'Insert failed: service %s already in repository' % content)
 
         # parse resource into record
         try:
@@ -1790,6 +1815,7 @@ class Csw(object):
             content, self.repository, self.kvp['resourcetype'],
             pagesize=self.csw_harvest_pagesize)
         except Exception, err:
+            LOGGER.exception(err)
             return self.exceptionreport('NoApplicableCode', 'source',
             'Harvest failed: record parsing failed: %s' % str(err))
 
@@ -1797,6 +1823,7 @@ class Csw(object):
         updated = 0
         ir = []
 
+        LOGGER.debug('Total Records parsed: %d' % len(records_parsed))
         for record in records_parsed:
             if self.kvp['resourcetype'] == 'urn:geoss:waf':
                 src = record.source
@@ -1818,6 +1845,16 @@ class Csw(object):
             title = getattr(record,
             self.context.md_core_model['mappings']['pycsw:Title'])
 
+            if record.type == 'service' and service_identifier is not None:  # service endpoint
+                LOGGER.debug('Replacing service identifier from %s to %s' % (record.identifier, service_identifier))
+                old_identifier = record.identifier
+                identifier = record.identifier = service_identifier
+            if (record.type != 'service' and service_identifier is not None
+                and old_identifier is not None):  # service resource
+                if record.identifier.find(old_identifier) != -1:
+                    new_identifier = record.identifier.replace(old_identifier, service_identifier)
+                    LOGGER.debug('Replacing service resource identifier from %s to %s' % (record.identifier, new_identifier))
+                    identifier = record.identifier = new_identifier
 
             ir.append({'identifier': identifier, 'title': title})
 
@@ -1825,6 +1862,10 @@ class Csw(object):
             LOGGER.debug('checking if record exists (%s)' % identifier)
             results = self.repository.query_ids(ids=[identifier])
 
+            if len(results) == 0:  # check for service identifier
+                LOGGER.debug('checking if service id exists (%s)' % service_identifier)
+                results = self.repository.query_ids(ids=[service_identifier])
+
             LOGGER.debug(str(results))
 
             if len(results) == 0:  # new record, it's a new insert
@@ -1860,8 +1901,24 @@ class Csw(object):
         util.nspath_eval('csw:TransactionResponse',
         self.context.namespaces), version='2.0.2')
 
+        if service_identifier is not None:
+            fresh_records = [str(i['identifier']) for i in ir]
+            existing_records = [str(i.identifier) for i in service_results]
+
+            deleted = set(existing_records) - set(fresh_records)
+            LOGGER.debug('Records to delete: %s' % str(deleted))
+
+            for to_delete in deleted:
+                delete_constraint = {
+                    'type': 'filter',
+                    'values': [to_delete],
+                    'where': 'identifier = :pvalue0'
+                }
+                self.repository.delete(delete_constraint)
+
         node2.append(
-        self._write_transactionsummary(inserted=inserted, updated=updated))
+        self._write_transactionsummary(inserted=inserted, updated=updated,
+                                       deleted=len(deleted)))
 
         if inserted > 0:
             # show insert result identifiers
@@ -2009,14 +2066,8 @@ class Csw(object):
             request['requestid'] = tmp if tmp is not None else None
 
             tmp = doc.find('.').attrib.get('maxRecords')
-            request['maxrecords'] = tmp if tmp is not None else \
-            self.config.get('server', 'maxrecords')
-
-            client_mr = int(request['maxrecords'])
-            server_mr = int(self.config.get('server', 'maxrecords'))
-
-            if client_mr < server_mr:
-                request['maxrecords'] = client_mr
+            if tmp is not None:
+                request['maxrecords'] = tmp
 
             tmp = doc.find(util.nspath_eval('csw:DistributedSearch',
                   self.context.namespaces))
@@ -2323,7 +2374,7 @@ class Csw(object):
         else:  # it's XML
             self.contenttype = self.mimetype
             response = etree.tostring(self.response,
-            pretty_print=self.pretty_print)
+            pretty_print=self.pretty_print, encoding='unicode')
             xmldecl = '<?xml version="1.0" encoding="%s" standalone="no"?>\n' \
             % self.encoding
             appinfo = '<!-- pycsw %s -->\n' % self.context.version
@@ -2331,7 +2382,7 @@ class Csw(object):
         LOGGER.debug('Response:\n%s' % response)
 
         s = '%s%s%s' % (xmldecl, appinfo, response)
-        return s.encode()
+        return s.encode(self.encoding)
 
 
     def _gen_soap_wrapper(self):
diff --git a/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml b/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml
index ce8eeab..645e362 100644
--- a/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml
+++ b/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml b/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml
index ce8eeab..645e362 100644
--- a/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml
+++ b/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_apiso_post_GetCapabilities.xml b/tests/expected/suites_apiso_post_GetCapabilities.xml
index fa942ce..13d520c 100644
--- a/tests/expected/suites_apiso_post_GetCapabilities.xml
+++ b/tests/expected/suites_apiso_post_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml b/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml
index 4eac630..1a0a8e9 100644
--- a/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml
+++ b/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml
@@ -10,7 +10,7 @@
     <atom:category>Hydrography-Oceanographic</atom:category>
     <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc"/>
-    <atom:title>Ñunç elementum</atom:title>
+    <atom:title>Ñunç elementum</atom:title>
     <georss:where>
       <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
         <gml:exterior>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml b/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml
index e0ba0e7..6fdbc6f 100644
--- a/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml
+++ b/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml
@@ -40,7 +40,7 @@
     <atom:category>Hydrography-Oceanographic</atom:category>
     <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc"/>
-    <atom:title>Ñunç elementum</atom:title>
+    <atom:title>Ñunç elementum</atom:title>
     <georss:where>
       <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
         <gml:exterior>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml b/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml
index eca89c5..d93c95d 100644
--- a/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml
+++ b/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml
@@ -10,7 +10,7 @@
     <atom:category>Land titles</atom:category>
     <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db"/>
-    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>
-    <atom:title>Fuscé vitae ligulä</atom:title>
+    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>
+    <atom:title>Fuscé vitae ligulä</atom:title>
   </atom:entry>
 </atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-time.xml b/tests/expected/suites_atom_get_opensearch-ogc-time.xml
index eca89c5..d93c95d 100644
--- a/tests/expected/suites_atom_get_opensearch-ogc-time.xml
+++ b/tests/expected/suites_atom_get_opensearch-ogc-time.xml
@@ -10,7 +10,7 @@
     <atom:category>Land titles</atom:category>
     <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db"/>
-    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>
-    <atom:title>Fuscé vitae ligulä</atom:title>
+    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>
+    <atom:title>Fuscé vitae ligulä</atom:title>
   </atom:entry>
 </atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml b/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml
index eca89c5..d93c95d 100644
--- a/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml
+++ b/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml
@@ -10,7 +10,7 @@
     <atom:category>Land titles</atom:category>
     <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db"/>
-    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>
-    <atom:title>Fuscé vitae ligulä</atom:title>
+    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>
+    <atom:title>Fuscé vitae ligulä</atom:title>
   </atom:entry>
 </atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml b/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml
index 29c2885..f7b1c74 100644
--- a/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml
+++ b/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml
@@ -10,7 +10,7 @@
     <atom:category>Hydrography-Oceanographic</atom:category>
     <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc"/>
-    <atom:title>Ñunç elementum</atom:title>
+    <atom:title>Ñunç elementum</atom:title>
     <georss:where>
       <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
         <gml:exterior>
diff --git a/tests/expected/suites_atom_get_opensearch.xml b/tests/expected/suites_atom_get_opensearch.xml
index 3887160..494b7b4 100644
--- a/tests/expected/suites_atom_get_opensearch.xml
+++ b/tests/expected/suites_atom_get_opensearch.xml
@@ -78,7 +78,7 @@
     <atom:category>Hydrography-Oceanographic</atom:category>
     <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>
     <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc"/>
-    <atom:title>Ñunç elementum</atom:title>
+    <atom:title>Ñunç elementum</atom:title>
     <georss:where>
       <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
         <gml:exterior>
diff --git a/tests/expected/suites_atom_post_GetCapabilities.xml b/tests/expected/suites_atom_post_GetCapabilities.xml
index 02cee9f..b1fa99b 100644
--- a/tests/expected/suites_atom_post_GetCapabilities.xml
+++ b/tests/expected/suites_atom_post_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_atom_post_GetRecords-filter-bbox.xml b/tests/expected/suites_atom_post_GetRecords-filter-bbox.xml
index 8c758e2..9f6eec9 100644
--- a/tests/expected/suites_atom_post_GetRecords-filter-bbox.xml
+++ b/tests/expected/suites_atom_post_GetRecords-filter-bbox.xml
@@ -23,7 +23,7 @@
       <atom:category>Hydrography-Oceanographic</atom:category>
       <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>
       <atom:link href="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc"/>
-      <atom:title>Ñunç elementum</atom:title>
+      <atom:title>Ñunç elementum</atom:title>
       <georss:where>
         <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
           <gml:exterior>
diff --git a/tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml b/tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml
+++ b/tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml b/tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml
+++ b/tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml b/tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml
index 3778181..7af5f73 100644
--- a/tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml
+++ b/tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml
@@ -3,7 +3,7 @@
 <csw:GetRecordByIdResponse xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis.net/ows" xmlns:fgdc="http://www.opengis.net/cat/csw/c [...]
   <csw:SummaryRecord>
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
     <dc:subject>Hydrography-Oceanographic</dc:subject>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
diff --git a/tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml b/tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml
+++ b/tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml b/tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml
+++ b/tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml b/tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml
index 452b59b..de807dd 100644
--- a/tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml
+++ b/tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml
@@ -53,6 +53,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml b/tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml
+++ b/tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml b/tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml
+++ b/tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml b/tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml
index f7e7fd5..6b16462 100644
--- a/tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml
+++ b/tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml
@@ -4,10 +4,10 @@
   <csw:Record>
     <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
-    <dc:title>Fuscé vitae ligulä</dc:title>
+    <dc:title>Fuscé vitae ligulä</dc:title>
     <dc:date>2003-05-09Z</dc:date>
     <dc:subject>Land titles</dc:subject>
     <dc:format>text/rtf</dc:format>
-    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
+    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
 </csw:Record>
 </csw:GetRecordByIdResponse>
diff --git a/tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml b/tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml
+++ b/tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml b/tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml
index ed0ca0a..5c5c068 100644
--- a/tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml
+++ b/tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml b/tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml
index 81f85e5..166c79e 100644
--- a/tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml
+++ b/tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml
@@ -30,7 +30,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml b/tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml
index 431b0a3..0f433b6 100644
--- a/tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml
+++ b/tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml
@@ -53,7 +53,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml b/tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml
index 0dae426..f704008 100644
--- a/tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml
+++ b/tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml
@@ -71,7 +71,7 @@
     </csw:SummaryRecord>
     <csw:SummaryRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <dc:subject>Hydrography-Oceanographic</dc:subject>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
diff --git a/tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml b/tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml
index fc99d14..1067478 100644
--- a/tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml
+++ b/tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml
@@ -6,7 +6,7 @@
     <csw:Record>
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
diff --git a/tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml b/tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml
index 431b0a3..0f433b6 100644
--- a/tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml
+++ b/tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml
@@ -53,7 +53,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml b/tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml
index 3c325b7..ef6ded2 100644
--- a/tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml
+++ b/tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml
@@ -63,7 +63,7 @@
     </csw:SummaryRecord>
     <csw:SummaryRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <dc:subject>Hydrography-Oceanographic</dc:subject>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
@@ -81,11 +81,11 @@
     </csw:SummaryRecord>
     <csw:SummaryRecord>
       <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
-      <dc:title>Fuscé vitae ligulä</dc:title>
+      <dc:title>Fuscé vitae ligulä</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
       <dc:subject>Land titles</dc:subject>
       <dc:format>text/rtf</dc:format>
-      <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
+      <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
     </csw:SummaryRecord>
   </csw:SearchResults>
 </csw:GetRecordsResponse>
diff --git a/tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml b/tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml
index 431b0a3..0f433b6 100644
--- a/tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml
+++ b/tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml
@@ -53,7 +53,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml b/tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml
index 431b0a3..0f433b6 100644
--- a/tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml
+++ b/tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml
@@ -53,7 +53,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml b/tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml
index 431b0a3..0f433b6 100644
--- a/tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml
+++ b/tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml
@@ -53,7 +53,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml b/tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml
index 431b0a3..0f433b6 100644
--- a/tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml
+++ b/tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml
@@ -53,7 +53,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml b/tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml
index 646e7bc..d3bad8b 100644
--- a/tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml
+++ b/tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml
@@ -5,7 +5,7 @@
   <csw:SearchResults nextRecord="0" numberOfRecordsMatched="1" numberOfRecordsReturned="1" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="brief">
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
-      <dc:title>Fuscé vitae ligulä</dc:title>
+      <dc:title>Fuscé vitae ligulä</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
     </csw:BriefRecord>
   </csw:SearchResults>
diff --git a/tests/expected/suites_default_get_GetCapabilities.xml b/tests/expected/suites_default_get_GetCapabilities.xml
index 53ecbfa..2172598 100644
--- a/tests/expected/suites_default_get_GetCapabilities.xml
+++ b/tests/expected/suites_default_get_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_default_get_GetRecords-sortby-asc.xml b/tests/expected/suites_default_get_GetRecords-sortby-asc.xml
index 2239e9b..315a1a2 100644
--- a/tests/expected/suites_default_get_GetRecords-sortby-asc.xml
+++ b/tests/expected/suites_default_get_GetRecords-sortby-asc.xml
@@ -38,11 +38,11 @@
     <csw:Record>
     <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
-    <dc:title>Fuscé vitae ligulä</dc:title>
+    <dc:title>Fuscé vitae ligulä</dc:title>
     <dc:date>2003-05-09Z</dc:date>
     <dc:subject>Land titles</dc:subject>
     <dc:format>text/rtf</dc:format>
-    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
+    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
 </csw:Record>
     <csw:Record>
     <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>
diff --git a/tests/expected/suites_default_get_GetRecords-sortby-desc.xml b/tests/expected/suites_default_get_GetRecords-sortby-desc.xml
index 14b8267..7c5dc7f 100644
--- a/tests/expected/suites_default_get_GetRecords-sortby-desc.xml
+++ b/tests/expected/suites_default_get_GetRecords-sortby-desc.xml
@@ -6,7 +6,7 @@
     <csw:Record>
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
@@ -67,11 +67,11 @@
     <csw:Record>
     <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
-    <dc:title>Fuscé vitae ligulä</dc:title>
+    <dc:title>Fuscé vitae ligulä</dc:title>
     <dc:date>2003-05-09Z</dc:date>
     <dc:subject>Land titles</dc:subject>
     <dc:format>text/rtf</dc:format>
-    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
+    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
 </csw:Record>
     <csw:Record>
     <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>
diff --git a/tests/expected/suites_default_post_GetCapabilities-SOAP.xml b/tests/expected/suites_default_post_GetCapabilities-SOAP.xml
index 2e35ac2..fcf84f9 100644
--- a/tests/expected/suites_default_post_GetCapabilities-SOAP.xml
+++ b/tests/expected/suites_default_post_GetCapabilities-SOAP.xml
@@ -74,6 +74,7 @@
           <ows:Parameter name="schemaLanguage">
             <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
             <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+            <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="outputFormat">
             <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml b/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml
index 53ecbfa..2172598 100644
--- a/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml
+++ b/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_default_post_GetCapabilities.xml b/tests/expected/suites_default_post_GetCapabilities.xml
index 53ecbfa..2172598 100644
--- a/tests/expected/suites_default_post_GetCapabilities.xml
+++ b/tests/expected/suites_default_post_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_default_post_GetDomain-property.xml b/tests/expected/suites_default_post_GetDomain-property.xml
index be5e24d..f3876b9 100644
--- a/tests/expected/suites_default_post_GetDomain-property.xml
+++ b/tests/expected/suites_default_post_GetDomain-property.xml
@@ -5,14 +5,14 @@
     <csw:PropertyName>dc:title</csw:PropertyName>
     <csw:ListOfValues>
       <csw:Value>Aliquam fermentum purus quis arcu</csw:Value>
-      <csw:Value>Fuscé vitae ligulä</csw:Value>
+      <csw:Value>Fuscé vitae ligulä</csw:Value>
       <csw:Value>Lorem ipsum</csw:Value>
       <csw:Value>Lorem ipsum dolor sit amet</csw:Value>
       <csw:Value>Maecenas enim</csw:Value>
       <csw:Value>Mauris sed neque</csw:Value>
       <csw:Value>Ut facilisis justo ut lacus</csw:Value>
       <csw:Value>Vestibulum massa purus</csw:Value>
-      <csw:Value>Ñunç elementum</csw:Value>
+      <csw:Value>Ñunç elementum</csw:Value>
     </csw:ListOfValues>
   </csw:DomainValues>
 </csw:GetDomainResponse>
diff --git a/tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml b/tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml
index 5337e97..6d61528 100644
--- a/tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml
+++ b/tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml
@@ -15,7 +15,7 @@
     <csw:Record>
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml b/tests/expected/suites_default_post_GetRecords-bbox-filter-crs84.xml
similarity index 76%
copy from tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml
copy to tests/expected/suites_default_post_GetRecords-bbox-filter-crs84.xml
index 98f5882..e23dfc3 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml
+++ b/tests/expected/suites_default_post_GetRecords-bbox-filter-crs84.xml
@@ -2,7 +2,16 @@
 <!-- PYCSW_VERSION -->
 <csw:GetRecordsResponse xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis.net/ows" xmlns:fgdc="http://www.opengis.net/cat/csw/csdg [...]
   <csw:SearchStatus timestamp="PYCSW_TIMESTAMP"/>
-  <csw:SearchResults nextRecord="0" numberOfRecordsMatched="2" numberOfRecordsReturned="2" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="brief">
+  <csw:SearchResults nextRecord="0" numberOfRecordsMatched="3" numberOfRecordsReturned="3" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="brief">
+    <csw:BriefRecord>
+      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>
+      <dc:title></dc:title>
+      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>
+      <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
+        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>
+        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>
+      </ows:BoundingBox>
+    </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>
       <dc:title>Mauris sed neque</dc:title>
@@ -14,7 +23,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_default_post_GetRecords-end.xml b/tests/expected/suites_default_post_GetRecords-end.xml
index f7311c1..c414a81 100644
--- a/tests/expected/suites_default_post_GetRecords-end.xml
+++ b/tests/expected/suites_default_post_GetRecords-end.xml
@@ -20,11 +20,11 @@
     <csw:Record>
     <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
-    <dc:title>Fuscé vitae ligulä</dc:title>
+    <dc:title>Fuscé vitae ligulä</dc:title>
     <dc:date>2003-05-09Z</dc:date>
     <dc:subject>Land titles</dc:subject>
     <dc:format>text/rtf</dc:format>
-    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
+    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
 </csw:Record>
   </csw:SearchResults>
 </csw:GetRecordsResponse>
diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml b/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml
index 98f5882..e650f15 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml
+++ b/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml
@@ -14,7 +14,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml b/tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml
index cf74a0d..4b7f8a6 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml
+++ b/tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml
@@ -5,7 +5,7 @@
   <csw:SearchResults nextRecord="0" numberOfRecordsMatched="2" numberOfRecordsReturned="2" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="brief">
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox.xml b/tests/expected/suites_default_post_GetRecords-filter-bbox.xml
index 98f5882..e650f15 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-bbox.xml
+++ b/tests/expected/suites_default_post_GetRecords-filter-bbox.xml
@@ -14,7 +14,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_default_post_GetRecords-filter-between.xml b/tests/expected/suites_default_post_GetRecords-filter-between.xml
index e4d16a4..ecf6c67 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-between.xml
+++ b/tests/expected/suites_default_post_GetRecords-filter-between.xml
@@ -15,11 +15,11 @@
     <csw:Record>
     <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
-    <dc:title>Fuscé vitae ligulä</dc:title>
+    <dc:title>Fuscé vitae ligulä</dc:title>
     <dc:date>2003-05-09Z</dc:date>
     <dc:subject>Land titles</dc:subject>
     <dc:format>text/rtf</dc:format>
-    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
+    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>
 </csw:Record>
     <csw:Record>
     <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>
diff --git a/tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml b/tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml
index 98f5882..e650f15 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml
+++ b/tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml
@@ -14,7 +14,7 @@
     </csw:BriefRecord>
     <csw:BriefRecord>
       <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
-      <dc:title>Ñunç elementum</dc:title>
+      <dc:title>Ñunç elementum</dc:title>
       <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
         <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
diff --git a/tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml b/tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml
index f8f0c4d..3d9cac6 100644
--- a/tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml
+++ b/tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml
@@ -41,7 +41,7 @@
     <csw:Record>
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
diff --git a/tests/expected/suites_dif_post_GetCapabilities.xml b/tests/expected/suites_dif_post_GetCapabilities.xml
index 7d53941..2dacf0c 100644
--- a/tests/expected/suites_dif_post_GetCapabilities.xml
+++ b/tests/expected/suites_dif_post_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_dif_post_GetRecords-filter-bbox.xml b/tests/expected/suites_dif_post_GetRecords-filter-bbox.xml
index ea169c6..ad3621e 100644
--- a/tests/expected/suites_dif_post_GetRecords-filter-bbox.xml
+++ b/tests/expected/suites_dif_post_GetRecords-filter-bbox.xml
@@ -37,7 +37,7 @@
     </dif:DIF>
     <dif:DIF xsi:schemaLocation="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd">
       <dif:Entry_ID>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dif:Entry_ID>
-      <dif:Entry_Title>Ñunç elementum</dif:Entry_Title>
+      <dif:Entry_Title>Ñunç elementum</dif:Entry_Title>
       <dif:Data_Set_Citation>
         <dif:Dataset_Creator/>
         <dif:Dataset_Release_Date/>
diff --git a/tests/expected/suites_ebrim_post_GetCapabilities.xml b/tests/expected/suites_ebrim_post_GetCapabilities.xml
index 93a0e31..2c9c930 100644
--- a/tests/expected/suites_ebrim_post_GetCapabilities.xml
+++ b/tests/expected/suites_ebrim_post_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_ebrim_post_GetRecords-filter-bbox-full.xml b/tests/expected/suites_ebrim_post_GetRecords-filter-bbox-full.xml
new file mode 100644
index 0000000..04665a2
--- /dev/null
+++ b/tests/expected/suites_ebrim_post_GetRecords-filter-bbox-full.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<csw:GetRecordsResponse xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis. [...]
+  <csw:SearchStatus timestamp="PYCSW_TIMESTAMP"/>
+  <csw:SearchResults nextRecord="0" numberOfRecordsMatched="2" numberOfRecordsReturned="2" recordSchema="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" elementSet="full">
+    <rim:ExtrinsicObject xsi:schemaLocation="http://www.opengis.net/cat/wrs/1.0 http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd" id="urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63" lid="urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63" objectType="http://purl.org/dc/dcmitype/Dataset" status="urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted">
+      <rim:VersionInfo versionName=""/>
+      <rim:ExternalIdentifier id="urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63" identificationScheme="foo" registryObject="None" value="urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63"/>
+      <rim:Name>
+        <rim:LocalizedString value="Mauris sed neque"/>
+      </rim:Name>
+      <rim:Description>
+        <rim:LocalizedString value="Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit."/>
+      </rim:Description>
+      <rim:Slot slotType="urn:ogc:def:dataType:ISO-19107:2003:GM_Envelope">
+        <rim:ValueList>
+          <rim:Value>
+            <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
+              <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>
+              <ows:UpperCorner>51.22 0.89</ows:UpperCorner>
+            </ows:BoundingBox>
+          </rim:Value>
+        </rim:ValueList>
+      </rim:Slot>
+      <rim:Slot name="http://purl.org/dc/elements/1.1/subject">
+        <rim:ValueList>
+          <rim:Value>Vegetation-Cropland</rim:Value>
+        </rim:ValueList>
+      </rim:Slot>
+    </rim:ExtrinsicObject>
+    <rim:ExtrinsicObject xsi:schemaLocation="http://www.opengis.net/cat/wrs/1.0 http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd" id="urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc" lid="urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc" objectType="http://purl.org/dc/dcmitype/Dataset" status="urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted">
+      <rim:VersionInfo versionName=""/>
+      <rim:ExternalIdentifier id="urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc" identificationScheme="foo" registryObject="None" value="urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc"/>
+      <rim:Name>
+        <rim:LocalizedString value="Ñunç elementum"/>
+      </rim:Name>
+      <rim:Description>
+        <rim:LocalizedString value="None"/>
+      </rim:Description>
+      <rim:Slot slotType="urn:ogc:def:dataType:ISO-19107:2003:GM_Envelope">
+        <rim:ValueList>
+          <rim:Value>
+            <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
+              <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>
+              <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>
+            </ows:BoundingBox>
+          </rim:Value>
+        </rim:ValueList>
+      </rim:Slot>
+      <rim:Slot name="http://purl.org/dc/elements/1.1/subject">
+        <rim:ValueList>
+          <rim:Value>Hydrography-Oceanographic</rim:Value>
+        </rim:ValueList>
+      </rim:Slot>
+    </rim:ExtrinsicObject>
+  </csw:SearchResults>
+</csw:GetRecordsResponse>
diff --git a/tests/expected/suites_fgdc_post_GetCapabilities.xml b/tests/expected/suites_fgdc_post_GetCapabilities.xml
index 8da4ef0..bc39c3c 100644
--- a/tests/expected/suites_fgdc_post_GetCapabilities.xml
+++ b/tests/expected/suites_fgdc_post_GetCapabilities.xml
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml b/tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml
index 22574f4..d55e72b 100644
--- a/tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml
+++ b/tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml
@@ -66,7 +66,7 @@
         <datasetid>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</datasetid>
         <citation>
           <citeinfo>
-            <title>Ñunç elementum</title>
+            <title>Ñunç elementum</title>
             <publinfo>
               <publish></publish>
             </publinfo>
diff --git a/tests/expected/suites_harvesting_post_GetCapabilities.xml b/tests/expected/suites_harvesting_post_GetCapabilities.xml
index 57ccc94..474485d 100644
--- a/tests/expected/suites_harvesting_post_GetCapabilities.xml
+++ b/tests/expected/suites_harvesting_post_GetCapabilities.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_harvesting_post_Harvest-csw.xml b/tests/expected/suites_harvesting_post_Harvest-csw-run1.xml
similarity index 96%
rename from tests/expected/suites_harvesting_post_Harvest-csw.xml
rename to tests/expected/suites_harvesting_post_Harvest-csw-run1.xml
index cf1366c..96d5d63 100644
--- a/tests/expected/suites_harvesting_post_Harvest-csw.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-csw-run1.xml
@@ -46,7 +46,7 @@
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-        <dc:title>Ñunç elementum</dc:title>
+        <dc:title>Ñunç elementum</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
@@ -58,7 +58,7 @@
       </csw:BriefRecord>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-        <dc:title>Fuscé vitae ligulä</dc:title>
+        <dc:title>Fuscé vitae ligulä</dc:title>
       </csw:BriefRecord>
     </csw:InsertResult>
   </csw:TransactionResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-iso.xml b/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml
similarity index 83%
copy from tests/expected/suites_harvesting_post_Harvest-iso.xml
copy to tests/expected/suites_harvesting_post_Harvest-csw-run2.xml
index 06537f5..2fb706d 100644
--- a/tests/expected/suites_harvesting_post_Harvest-iso.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml
@@ -3,15 +3,9 @@
 <csw:HarvestResponse xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:apiso="http://www.opengis.net/cat/csw/apiso/1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xlink="http://www.w3.org/1999/xlink" xml [...]
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>1</csw:totalInserted>
-      <csw:totalUpdated>0</csw:totalUpdated>
+      <csw:totalInserted>0</csw:totalInserted>
+      <csw:totalUpdated>13</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
-    <csw:InsertResult>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-        <dc:title>Wasserkörper Linien</dc:title>
-      </csw:BriefRecord>
-    </csw:InsertResult>
   </csw:TransactionResponse>
 </csw:HarvestResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-iso.xml b/tests/expected/suites_harvesting_post_Harvest-iso.xml
index 06537f5..e0669d0 100644
--- a/tests/expected/suites_harvesting_post_Harvest-iso.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-iso.xml
@@ -10,7 +10,7 @@
     <csw:InsertResult>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-        <dc:title>Wasserkörper Linien</dc:title>
+        <dc:title>Wasserkörper Linien</dc:title>
       </csw:BriefRecord>
     </csw:InsertResult>
   </csw:TransactionResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-wms.xml b/tests/expected/suites_harvesting_post_Harvest-wms-run1.xml
similarity index 57%
rename from tests/expected/suites_harvesting_post_Harvest-wms.xml
rename to tests/expected/suites_harvesting_post_Harvest-wms-run1.xml
index b018325..51c2b0e 100644
--- a/tests/expected/suites_harvesting_post_Harvest-wms.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-wms-run1.xml
@@ -3,50 +3,26 @@
 <csw:HarvestResponse xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:apiso="http://www.opengis.net/cat/csw/apiso/1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xlink="http://www.w3.org/1999/xlink" xml [...]
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>10</csw:totalInserted>
+      <csw:totalInserted>4</csw:totalInserted>
       <csw:totalUpdated>0</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
     <csw:InsertResult>
       <csw:BriefRecord>
         <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-        <dc:title>Wisconsin Lake Clarity</dc:title>
+        <dc:title>IEM WMS Service</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Highways</dc:identifier>
-        <dc:title>Highways</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-time_idx</dc:identifier>
+        <dc:title>NEXRAD BASE REFLECT</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-LakesTSI</dc:identifier>
-        <dc:title>LakesTSI</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-nexrad-n0r-wmst</dc:identifier>
+        <dc:title>NEXRAD BASE REFLECT</dc:title>
       </csw:BriefRecord>
       <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-LakeClarity</dc:identifier>
-        <dc:title>Wisconsin Lake Clarity</dc:title>
-      </csw:BriefRecord>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-LakesTSI_0305</dc:identifier>
-        <dc:title>LakesTSI_0305</dc:title>
-      </csw:BriefRecord>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Relief</dc:identifier>
-        <dc:title>Relief</dc:title>
-      </csw:BriefRecord>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-LakeNames_0305</dc:identifier>
-        <dc:title>LakeNames_0305</dc:title>
-      </csw:BriefRecord>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Roads</dc:identifier>
-        <dc:title>Roads</dc:title>
-      </csw:BriefRecord>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-LakeNames</dc:identifier>
-        <dc:title>LakeNames</dc:title>
-      </csw:BriefRecord>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER-Counties</dc:identifier>
-        <dc:title>Counties</dc:title>
+        <dc:identifier>PYCSW_IDENTIFIER-nexrad_base_reflect</dc:identifier>
+        <dc:title>IEM WMS Service</dc:title>
       </csw:BriefRecord>
     </csw:InsertResult>
   </csw:TransactionResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-iso.xml b/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml
similarity index 83%
copy from tests/expected/suites_harvesting_post_Harvest-iso.xml
copy to tests/expected/suites_harvesting_post_Harvest-wms-run2.xml
index 06537f5..d012260 100644
--- a/tests/expected/suites_harvesting_post_Harvest-iso.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml
@@ -3,15 +3,9 @@
 <csw:HarvestResponse xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:apiso="http://www.opengis.net/cat/csw/apiso/1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xlink="http://www.w3.org/1999/xlink" xml [...]
   <csw:TransactionResponse version="2.0.2">
     <csw:TransactionSummary>
-      <csw:totalInserted>1</csw:totalInserted>
-      <csw:totalUpdated>0</csw:totalUpdated>
+      <csw:totalInserted>0</csw:totalInserted>
+      <csw:totalUpdated>4</csw:totalUpdated>
       <csw:totalDeleted>0</csw:totalDeleted>
     </csw:TransactionSummary>
-    <csw:InsertResult>
-      <csw:BriefRecord>
-        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-        <dc:title>Wasserkörper Linien</dc:title>
-      </csw:BriefRecord>
-    </csw:InsertResult>
   </csw:TransactionResponse>
 </csw:HarvestResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml
index fcf9fe5..4e1ada3 100644
--- a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml
@@ -5,28 +5,20 @@
   <csw:SearchResults nextRecord="0" numberOfRecordsMatched="1" numberOfRecordsReturned="1" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="full">
     <csw:Record>
       <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-      <dc:title>Wisconsin Lake Clarity</dc:title>
+      <dc:title>IEM WMS Service</dc:title>
       <dc:type>service</dc:type>
-      <dc:subject>SSEC</dc:subject>
-      <dc:subject>PAW</dc:subject>
-      <dc:subject>remote sensing</dc:subject>
-      <dc:subject>meteorology</dc:subject>
-      <dc:subject>atmospheric science</dc:subject>
-      <dc:subject>University of Wisconsin</dc:subject>
-      <dc:subject>Madison</dc:subject>
-      <dc:subject>weather</dc:subject>
-      <dc:subject>land</dc:subject>
+      <dc:subject></dc:subject>
       <dc:format>OGC:WMS</dc:format>
-      <dct:references scheme="OGC:WMS">http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dct:references>
-      <dct:abstract>General: This server hosts a set of experimental OGC Web Services of remote sensing data products for use in a broad range of both desktop and mobile device clients.</dct:abstract>
-      <dc:creator>Dr. Sam Batzli</dc:creator>
-      <dc:publisher>Space Science and Engineering Center, University of Wisconsin-Madison</dc:publisher>
-      <dc:contributor>Dr. Sam Batzli</dc:contributor>
-      <dc:source>http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dc:source>
-      <dc:rights>The following attribution is required if published or reproduced: Source: Space Science and Engineering Center, University of Wisconsin-Madison</dc:rights>
+      <dct:references scheme="OGC:WMS">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dct:references>
+      <dct:abstract>IEM generated CONUS composite of NWS WSR-88D level III base reflectivity.</dct:abstract>
+      <dc:creator>Daryl Herzmann</dc:creator>
+      <dc:publisher>Iowa State University</dc:publisher>
+      <dc:contributor>Daryl Herzmann</dc:contributor>
+      <dc:source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dc:source>
+      <dc:rights>None</dc:rights>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
-        <ows:LowerCorner>42.41 -93.03</ows:LowerCorner>
-        <ows:UpperCorner>47.13 -86.64</ows:UpperCorner>
+        <ows:LowerCorner>24.0 -126.0</ows:LowerCorner>
+        <ows:UpperCorner>50.0 -66.0</ows:UpperCorner>
       </ows:BoundingBox>
     </csw:Record>
   </csw:SearchResults>
diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml
index b5241f6..478c621 100644
--- a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml
@@ -2,27 +2,31 @@
 <!-- PYCSW_VERSION -->
 <csw:GetRecordsResponse xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:apiso="http://www.opengis.net/cat/csw/apiso/1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xlink="http://www.w3.org/1999/xlink"  [...]
   <csw:SearchStatus timestamp="PYCSW_TIMESTAMP"/>
-  <csw:SearchResults nextRecord="0" numberOfRecordsMatched="1" numberOfRecordsReturned="1" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="full">
+  <csw:SearchResults nextRecord="0" numberOfRecordsMatched="2" numberOfRecordsReturned="2" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="full">
     <csw:Record>
       <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-      <dc:title>Wisconsin Lake Clarity</dc:title>
+      <dc:title>NEXRAD BASE REFLECT</dc:title>
       <dc:type>dataset</dc:type>
-      <dc:subject>SSEC</dc:subject>
-      <dc:subject>PAW</dc:subject>
-      <dc:subject>remote sensing</dc:subject>
-      <dc:subject>meteorology</dc:subject>
-      <dc:subject>atmospheric science</dc:subject>
-      <dc:subject>University of Wisconsin</dc:subject>
-      <dc:subject>Madison</dc:subject>
-      <dc:subject>weather</dc:subject>
-      <dc:subject>land</dc:subject>
-      <dct:references scheme="OGC:WMS">http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dct:references>
-      <dct:references scheme="WWW:LINK-1.0-http--image-thumbnail">http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=%2Fhome%2Fwms%2Fdata%2Fmapfiles%2Flakestsi.map&layers=LakeClarity&width=200&version=1.1.1&bbox=-93.0307%2C42.4104%2C-86.6404%2C47.1335&service=WMS&format=image%2Fpng&styles=&srs=EPSG%3A4326&request=GetMap&height=200</dct:references>
-      <dct:abstract>General: This server hosts a set of experimental OGC Web Services of remote sensing data products for use in a broad range of both desktop and mobile device clients.</dct:abstract>
-      <dc:source>http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dc:source>
+      <dc:subject></dc:subject>
+      <dct:references scheme="OGC:WMS">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dct:references>
+      <dct:references scheme="WWW:LINK-1.0-http--image-thumbnail">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?layers=time_idx&width=200&version=1.1.1&bbox=-126.0%2C24.0%2C-66.0%2C50.0&service=WMS&format=image%2Fpng&styles=&srs=EPSG%3A4326&request=GetMap&height=200</dct:references>
+      <dc:source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dc:source>
       <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
-        <ows:LowerCorner>42.41 -93.03</ows:LowerCorner>
-        <ows:UpperCorner>47.13 -86.64</ows:UpperCorner>
+        <ows:LowerCorner>24.0 -126.0</ows:LowerCorner>
+        <ows:UpperCorner>50.0 -66.0</ows:UpperCorner>
+      </ows:BoundingBox>
+    </csw:Record>
+    <csw:Record>
+      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+      <dc:title>NEXRAD BASE REFLECT</dc:title>
+      <dc:type>dataset</dc:type>
+      <dc:subject></dc:subject>
+      <dct:references scheme="OGC:WMS">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dct:references>
+      <dct:references scheme="WWW:LINK-1.0-http--image-thumbnail">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?layers=nexrad-n0r-wmst&width=200&version=1.1.1&bbox=-126.0%2C24.0%2C-66.0%2C50.0&service=WMS&format=image%2Fpng&styles=&srs=EPSG%3A4326&request=GetMap&height=200</dct:references>
+      <dc:source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dc:source>
+      <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326" dimensions="2">
+        <ows:LowerCorner>24.0 -126.0</ows:LowerCorner>
+        <ows:UpperCorner>50.0 -66.0</ows:UpperCorner>
       </ows:BoundingBox>
     </csw:Record>
   </csw:SearchResults>
diff --git a/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml b/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml
index 525c408..4781e5a 100644
--- a/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml
+++ b/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml
@@ -4,6 +4,6 @@
   <csw:TransactionSummary>
     <csw:totalInserted>0</csw:totalInserted>
     <csw:totalUpdated>0</csw:totalUpdated>
-    <csw:totalDeleted>127</csw:totalDeleted>
+    <csw:totalDeleted>121</csw:totalDeleted>
   </csw:TransactionSummary>
 </csw:TransactionResponse>
diff --git a/tests/expected/suites_manager_post_GetCapabilities.xml b/tests/expected/suites_manager_post_GetCapabilities.xml
index 2a28414..4bdcaec 100644
--- a/tests/expected/suites_manager_post_GetCapabilities.xml
+++ b/tests/expected/suites_manager_post_GetCapabilities.xml
@@ -79,6 +79,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_dc.xml b/tests/expected/suites_oaipmh_get_ListRecords_dc.xml
index d6b8df7..490be0a 100644
--- a/tests/expected/suites_oaipmh_get_ListRecords_dc.xml
+++ b/tests/expected/suites_oaipmh_get_ListRecords_dc.xml
@@ -154,7 +154,7 @@
         <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ows="http://www.opengis.net/ows">
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml b/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml
index 4947b29..b54b7e3 100644
--- a/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml
+++ b/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml
@@ -349,7 +349,7 @@
             <gco:CharacterString/>
           </gmd:language>
           <gmd:hierarchyLevel>
-            <gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="http://purl.org/dc/dcmitype/Dataset" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Dataset</gmd:MD_ScopeCode>
+            <gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="dataset" codeSpace="ISOTC211/19115">dataset</gmd:MD_ScopeCode>
           </gmd:hierarchyLevel>
           <gmd:contact/>
           <gmd:dateStamp>
@@ -403,7 +403,7 @@
             <gco:CharacterString/>
           </gmd:language>
           <gmd:hierarchyLevel>
-            <gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="http://purl.org/dc/dcmitype/Dataset" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Dataset</gmd:MD_ScopeCode>
+            <gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="dataset" codeSpace="ISOTC211/19115">dataset</gmd:MD_ScopeCode>
           </gmd:hierarchyLevel>
           <gmd:contact/>
           <gmd:dateStamp>
@@ -477,7 +477,7 @@
             <gco:CharacterString/>
           </gmd:language>
           <gmd:hierarchyLevel>
-            <gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="http://purl.org/dc/dcmitype/Dataset" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Dataset</gmd:MD_ScopeCode>
+            <gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="dataset" codeSpace="ISOTC211/19115">dataset</gmd:MD_ScopeCode>
           </gmd:hierarchyLevel>
           <gmd:contact/>
           <gmd:dateStamp>
@@ -494,7 +494,7 @@
               <gmd:citation>
                 <gmd:CI_Citation>
                   <gmd:title>
-                    <gco:CharacterString>Ñunç elementum</gco:CharacterString>
+                    <gco:CharacterString>Ñunç elementum</gco:CharacterString>
                   </gmd:title>
                 </gmd:CI_Citation>
               </gmd:citation>
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml b/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml
index 0d31efd..c2a756b 100644
--- a/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml
+++ b/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml
@@ -154,7 +154,7 @@
         <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ows="http://www.opengis.net/ows">
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
diff --git a/tests/expected/suites_repofilter_post_GetRecords-all.xml b/tests/expected/suites_repofilter_post_GetRecords-all.xml
index 3e201b1..4cfd900 100644
--- a/tests/expected/suites_repofilter_post_GetRecords-all.xml
+++ b/tests/expected/suites_repofilter_post_GetRecords-all.xml
@@ -25,7 +25,7 @@
     <csw:Record>
     <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>
     <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
-    <dc:title>Ñunç elementum</dc:title>
+    <dc:title>Ñunç elementum</dc:title>
     <dc:subject scheme="http://www.digest.org/2.1">Hydrography-Oceanographic</dc:subject>
     <dc:date>2005-10-24Z</dc:date>
     <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
diff --git a/tests/expected/suites_utf-8_post_GetCapabilities.xml b/tests/expected/suites_utf-8_post_GetCapabilities.xml
index 8a1705e..e41a829 100644
--- a/tests/expected/suites_utf-8_post_GetCapabilities.xml
+++ b/tests/expected/suites_utf-8_post_GetCapabilities.xml
@@ -2,7 +2,7 @@
 <!-- PYCSW_VERSION -->
 <csw:Capabilities xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:gml="http://www.opengis.net/gml" xmlns:dif="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis.net/ows" xmlns:fgdc="http://www.opengis.net/cat/csw/csdgm" xml [...]
   <ows:ServiceIdentification>
-    <ows:Title>ErrŹĆŁÓdd</ows:Title>
+    <ows:Title>ErrŹĆŁÓdd</ows:Title>
     <ows:Abstract>pycsw is an OGC CSW server implementation written in Python</ows:Abstract>
     <ows:Keywords>
       <ows:Keyword>catalogue</ows:Keyword>
@@ -72,6 +72,7 @@
       <ows:Parameter name="schemaLanguage">
         <ows:Value>http://www.w3.org/XML/Schema</ows:Value>
         <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
+        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>
       </ows:Parameter>
       <ows:Parameter name="outputFormat">
         <ows:Value>application/xml</ows:Value>
diff --git a/tests/index.html b/tests/index.html
index e966176..936fc72 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -74,6 +74,7 @@
                             <option value="tests/suites/default/default.cfg,suites/default/post/GetDomain-parameter.xml">suites/default/post/GetDomain-parameter.xml</option>
                             <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-anytext-equal.xml">suites/default/post/GetRecords-filter-anytext-equal.xml</option>
                             <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-and-nested-or.xml">suites/default/post/GetRecords-filter-and-nested-or.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-bbox-filter-crs84.xml">suites/default/post/GetRecords-bbox-filter-crs84.xml</option>
                             <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all.xml">suites/default/post/GetRecords-all.xml</option>
                             <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-or-bbox-freetext.xml">suites/default/post/GetRecords-filter-or-bbox-freetext.xml</option>
                             <option value="tests/suites/default/default.cfg,suites/default/post/DescribeRecord.xml">suites/default/post/DescribeRecord.xml</option>
@@ -116,6 +117,7 @@
                             <option value="tests/suites/dif/default.cfg,suites/dif/post/GetCapabilities.xml">suites/dif/post/GetCapabilities.xml</option>
                             <option value="tests/suites/dif/default.cfg,suites/dif/post/GetRecords-filter-bbox.xml">suites/dif/post/GetRecords-filter-bbox.xml</option>
                             <option value="tests/suites/ebrim/default.cfg,suites/ebrim/post/DescribeRecord.xml">suites/ebrim/post/DescribeRecord.xml</option>
+                            <option value="tests/suites/ebrim/default.cfg,suites/ebrim/post/GetRecords-filter-bbox-full.xml">suites/ebrim/post/GetRecords-filter-bbox-full.xml</option>
                             <option value="tests/suites/ebrim/default.cfg,suites/ebrim/post/GetCapabilities.xml">suites/ebrim/post/GetCapabilities.xml</option>
                             <option value="tests/suites/ebrim/default.cfg,suites/ebrim/post/GetRecords-filter-bbox.xml">suites/ebrim/post/GetRecords-filter-bbox.xml</option>
                             <option value="tests/suites/utf-8/default.cfg,suites/utf-8/post/GetCapabilities.xml">suites/utf-8/post/GetCapabilities.xml</option>
@@ -241,20 +243,22 @@
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-iso.xml">suites/harvesting/post/Harvest-iso.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Exception-Havest-csw-404.xml">suites/harvesting/post/Exception-Havest-csw-404.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-csw-run2.xml">suites/harvesting/post/Harvest-csw-run2.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-wms-run1.xml">suites/harvesting/post/Harvest-wms-run1.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-rdf.xml">suites/harvesting/post/Harvest-rdf.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-csw-run1.xml">suites/harvesting/post/Harvest-csw-run1.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-wps.xml">suites/harvesting/post/Harvest-wps.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-waf.xml">suites/harvesting/post/Harvest-waf.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Clear-000-delete-all.xml">suites/harvesting/post/Clear-000-delete-all.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-wms.xml">suites/harvesting/post/Harvest-wms.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-wms-run2.xml">suites/harvesting/post/Harvest-wms-run2.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Transaction-000-delete-all.xml">suites/harvesting/post/Transaction-000-delete-all.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-wfs.xml">suites/harvesting/post/Harvest-wfs.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-sos100.xml">suites/harvesting/post/Harvest-sos100.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-wcs.xml">suites/harvesting/post/Harvest-wcs.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-fgdc.xml">suites/harvesting/post/Harvest-fgdc.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-csw.xml">suites/harvesting/post/Harvest-csw.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/GetCapabilities.xml">suites/harvesting/post/GetCapabilities.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-csw-iso.xml">suites/harvesting/post/Harvest-csw-iso.xml</option>
                             <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-dc.xml">suites/harvesting/post/Harvest-dc.xml</option>
diff --git a/tests/suites/cite/default.cfg b/tests/suites/cite/default.cfg
index 012ce8f..ee303ec 100644
--- a/tests/suites/cite/default.cfg
+++ b/tests/suites/cite/default.cfg
@@ -33,7 +33,7 @@ url=http://localhost/pycsw/csw.py?config=tests/suites/cite/default.cfg
 mimetype=application/xml; charset=UTF-8
 encoding=UTF-8
 language=en-US
-maxrecords=10
+#maxrecords=10
 federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery
 pretty_print=true
 #spatial_ranking=true
diff --git a/tests/suites/default/post/GetRecords-bbox-filter-crs84.xml b/tests/suites/default/post/GetRecords-bbox-filter-crs84.xml
new file mode 100644
index 0000000..ca1674d
--- /dev/null
+++ b/tests/suites/default/post/GetRecords-bbox-filter-crs84.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" service="CSW" version="2.0.2" resultType="results" startPosition="1" maxRecords="5" outputFormat="application/xml" outputSchema="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" xmlns:gml="http://www.opengis.net/gml">
+    <csw:Query typeNames="csw:Record">
+        <csw:ElementSetName>brief</csw:ElementSetName>
+        <csw:Constraint version="1.1.0">
+            <ogc:Filter>
+                    <ogc:BBOX>
+                        <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
+                        <gml:Envelope srsName="urn:ogc:def:crs:OGC:1.3:CRS84">
+                            <gml:lowerCorner>-180 -90</gml:lowerCorner>
+                            <gml:upperCorner>180 90</gml:upperCorner>
+                        </gml:Envelope>
+                    </ogc:BBOX>
+            </ogc:Filter>
+        </csw:Constraint>
+    </csw:Query>
+</csw:GetRecords>
diff --git a/tests/suites/ebrim/post/GetRecords-filter-bbox-full.xml b/tests/suites/ebrim/post/GetRecords-filter-bbox-full.xml
new file mode 100644
index 0000000..6b6f849
--- /dev/null
+++ b/tests/suites/ebrim/post/GetRecords-filter-bbox-full.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<csw:GetRecords xmlns:fgdc="http://www.opengis.net/cat/csw/csdgm" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" service="CSW" version="2.0.2" resultType="results" startPosition="1" maxRecords="5" outputFormat="application/xml" outputSchema="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xs [...]
+    <csw:Query typeNames="csw:Record">
+        <csw:ElementSetName>full</csw:ElementSetName>
+        <csw:Constraint version="1.1.0">
+            <ogc:Filter>
+				<ogc:BBOX>
+					<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
+					<gml:Envelope>
+						<gml:lowerCorner>47 -5</gml:lowerCorner>
+						<gml:upperCorner>55 20</gml:upperCorner>
+					</gml:Envelope>
+				</ogc:BBOX>
+            </ogc:Filter>
+        </csw:Constraint>
+    </csw:Query>
+</csw:GetRecords>
diff --git a/tests/suites/harvesting/post/Harvest-csw.xml b/tests/suites/harvesting/post/Harvest-csw-run1.xml
similarity index 100%
copy from tests/suites/harvesting/post/Harvest-csw.xml
copy to tests/suites/harvesting/post/Harvest-csw-run1.xml
diff --git a/tests/suites/harvesting/post/Harvest-csw.xml b/tests/suites/harvesting/post/Harvest-csw-run2.xml
similarity index 100%
rename from tests/suites/harvesting/post/Harvest-csw.xml
rename to tests/suites/harvesting/post/Harvest-csw-run2.xml
diff --git a/tests/suites/harvesting/post/Harvest-wms.xml b/tests/suites/harvesting/post/Harvest-wms-run1.xml
similarity index 86%
copy from tests/suites/harvesting/post/Harvest-wms.xml
copy to tests/suites/harvesting/post/Harvest-wms-run1.xml
index cab51a1..a67274f 100644
--- a/tests/suites/harvesting/post/Harvest-wms.xml
+++ b/tests/suites/harvesting/post/Harvest-wms-run1.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Harvest xmlns="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:ows="http://www.opengis.net/ows" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/C [...]
-  <Source>http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</Source>
+  <Source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</Source>
   <ResourceType>http://www.opengis.net/wms</ResourceType>
   <ResourceFormat>application/xml</ResourceFormat>
 </Harvest>
diff --git a/tests/suites/harvesting/post/Harvest-wms.xml b/tests/suites/harvesting/post/Harvest-wms-run2.xml
similarity index 86%
rename from tests/suites/harvesting/post/Harvest-wms.xml
rename to tests/suites/harvesting/post/Harvest-wms-run2.xml
index cab51a1..a67274f 100644
--- a/tests/suites/harvesting/post/Harvest-wms.xml
+++ b/tests/suites/harvesting/post/Harvest-wms-run2.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Harvest xmlns="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:ows="http://www.opengis.net/ows" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/C [...]
-  <Source>http://wmsserv2.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</Source>
+  <Source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</Source>
   <ResourceType>http://www.opengis.net/wms</ResourceType>
   <ResourceFormat>application/xml</ResourceFormat>
 </Harvest>
diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml b/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml
index a1a67fb..ab70e4b 100644
--- a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml
+++ b/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml
@@ -11,7 +11,7 @@
           </ogc:PropertyIsEqualTo>
           <ogc:PropertyIsEqualTo>
             <ogc:PropertyName>csw:AnyText</ogc:PropertyName>
-            <ogc:Literal>%Lake Clarity%</ogc:Literal>
+            <ogc:Literal>%nexrad%</ogc:Literal>
           </ogc:PropertyIsEqualTo>
         </ogc:And>      
       </ogc:Filter>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/pycsw.git



More information about the Pkg-grass-devel mailing list