[pycsw] 06/20: Imported Upstream version 1.10.0

Johan Van de Wauw johanvdw-guest at moszumanska.debian.org
Tue Sep 30 19:16:26 UTC 2014


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

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

commit f07e99bc1810e1fe43d4514ea300c58f7c088380
Author: Johan Van de Wauw <johan.vandewauw at gmail.com>
Date:   Mon Sep 29 15:50:44 2014 +0200

    Imported Upstream version 1.10.0
---
 .travis.yml                                        |    2 +-
 VERSION.txt                                        |    2 +-
 bin/pycsw-admin.py                                 |   12 +-
 docs/_build/doctrees/administration.doctree        |  Bin 43456 -> 43458 bytes
 docs/_build/doctrees/ckan.doctree                  |  Bin 7181 -> 7178 bytes
 docs/_build/doctrees/committers.doctree            |  Bin 7554 -> 7556 bytes
 docs/_build/doctrees/configuration.doctree         |  Bin 57725 -> 58399 bytes
 docs/_build/doctrees/contributing.doctree          |  Bin 32548 -> 32550 bytes
 docs/_build/doctrees/distributedsearching.doctree  |  Bin 16380 -> 16382 bytes
 docs/_build/doctrees/environment.pickle            |  Bin 0 -> 56076 bytes
 docs/_build/doctrees/geonode.doctree               |  Bin 7516 -> 7518 bytes
 docs/_build/doctrees/index.doctree                 |  Bin 5876 -> 5901 bytes
 docs/_build/doctrees/installation.doctree          |  Bin 36239 -> 36238 bytes
 docs/_build/doctrees/introduction.doctree          |  Bin 52206 -> 53558 bytes
 docs/_build/doctrees/license.doctree               |  Bin 5839 -> 5841 bytes
 docs/_build/doctrees/oaipmh.doctree                |  Bin 0 -> 5785 bytes
 docs/_build/doctrees/odc.doctree                   |  Bin 7375 -> 7377 bytes
 docs/_build/doctrees/opensearch.doctree            |  Bin 6836 -> 7528 bytes
 docs/_build/doctrees/outputschemas.doctree         |  Bin 10408 -> 10410 bytes
 docs/_build/doctrees/profiles.doctree              |  Bin 41529 -> 41531 bytes
 docs/_build/doctrees/repofilters.doctree           |  Bin 25175 -> 25177 bytes
 docs/_build/doctrees/sitemaps.doctree              |  Bin 4934 -> 4936 bytes
 docs/_build/doctrees/soap.doctree                  |  Bin 3884 -> 3886 bytes
 docs/_build/doctrees/sru.doctree                   |  Bin 5556 -> 5558 bytes
 docs/_build/doctrees/support.doctree               |  Bin 4448 -> 4450 bytes
 docs/_build/doctrees/testing.doctree               |  Bin 32371 -> 32368 bytes
 docs/_build/doctrees/tools.doctree                 |  Bin 11422 -> 11492 bytes
 docs/_build/doctrees/transactions.doctree          |  Bin 33440 -> 33442 bytes
 docs/_build/html/.buildinfo                        |    4 +
 docs/_build/html/_sources/configuration.txt        |    2 +-
 docs/_build/html/_sources/index.txt                |    1 +
 docs/_build/html/_sources/installation.txt         |    4 +-
 docs/_build/html/_sources/introduction.txt         |   10 +-
 docs/_build/html/_sources/oaipmh.txt               |   17 +
 docs/_build/html/_sources/opensearch.txt           |   21 +-
 docs/_build/html/_sources/tools.txt                |    2 +-
 docs/_build/html/_static/basic.css                 |    2 +-
 docs/_build/html/_static/default.css               |    2 +-
 docs/_build/html/_static/doctools.js               |    2 +-
 docs/_build/html/_static/pycsw-logo.png            |  Bin 0 -> 16230 bytes
 docs/_build/html/_static/searchtools.js            |    2 +-
 docs/_build/html/_static/sidebar.js                |    2 +-
 docs/_build/html/_static/websupport.js             |    2 +-
 docs/_build/html/administration.html               |   32 +-
 docs/_build/html/ckan.html                         |   32 +-
 docs/_build/html/committers.html                   |   32 +-
 docs/_build/html/configuration.html                |   34 +-
 docs/_build/html/contributing.html                 |   32 +-
 docs/_build/html/distributedsearching.html         |   32 +-
 docs/_build/html/geonode.html                      |   32 +-
 docs/_build/html/index.html                        |   44 +-
 docs/_build/html/installation.html                 |   36 +-
 docs/_build/html/introduction.html                 |   50 +-
 docs/_build/html/license.html                      |   32 +-
 docs/_build/html/{sru.html => oaipmh.html}         |   66 +-
 docs/_build/html/objects.inv                       |    8 +
 docs/_build/html/odc.html                          |   32 +-
 docs/_build/html/opensearch.html                   |   69 +-
 docs/_build/html/outputschemas.html                |   32 +-
 docs/_build/html/profiles.html                     |   32 +-
 docs/_build/html/repofilters.html                  |   32 +-
 docs/_build/html/search.html                       |   32 +-
 docs/_build/html/searchindex.js                    |    1 +
 docs/_build/html/sitemaps.html                     |   32 +-
 docs/_build/html/soap.html                         |   42 +-
 docs/_build/html/sru.html                          |   32 +-
 docs/_build/html/support.html                      |   32 +-
 docs/_build/html/testing.html                      |   32 +-
 docs/_build/html/tools.html                        |   34 +-
 docs/_build/html/transactions.html                 |   32 +-
 docs/_static/pycsw-logo.png                        |  Bin 0 -> 16230 bytes
 docs/_templates/indexsidebar.html                  |    2 +-
 docs/_templates/layout.html                        |   17 +
 docs/conf.py                                       |    4 +-
 docs/configuration.rst                             |    2 +-
 docs/index.rst                                     |    1 +
 docs/installation.rst                              |    4 +-
 docs/introduction.rst                              |   10 +-
 docs/oaipmh.rst                                    |   17 +
 docs/opensearch.rst                                |   21 +-
 docs/tools.rst                                     |    2 +-
 etc/dist/debian/changelog                          |   18 +
 etc/dist/debian/control                            |    2 +-
 etc/dist/debian/pycsw-cgi.install                  |   24 +-
 etc/dist/debian/pycsw-cgi.postinst                 |    7 +-
 etc/dist/opensuse/python-pycsw.spec                |    2 +-
 etc/dist/osgeolive/install_pycsw.sh                |    2 +-
 etc/pycsw.conf                                     |    5 +
 etc/pycsw.desktop                                  |    2 +-
 pycsw-1.8.2.tar                                    |  Bin 10240 -> 0 bytes
 pycsw/__init__.py                                  |    2 +-
 pycsw/admin.py                                     |   39 +-
 pycsw/config.py                                    |    3 +
 pycsw/fes.py                                       |   12 +-
 pycsw/metadata.py                                  |   49 +-
 pycsw/oaipmh.py                                    |  283 +++++
 pycsw/opensearch.py                                |  218 +++-
 pycsw/plugins/repository/geonode/geonode_.py       |    7 +-
 pycsw/plugins/repository/odc/odc.py                |    7 +-
 pycsw/repository.py                                |    7 +-
 pycsw/server.py                                    |   38 +-
 requirements.txt                                   |    7 +-
 ...ites_apiso-inspire_get_GetCapabilities-lang.xml |    3 +
 .../suites_apiso-inspire_get_GetCapabilities.xml   |    3 +
 .../expected/suites_apiso_post_GetCapabilities.xml |    3 +
 .../suites_apiso_post_GetRecordById-full-dc.xml    |    2 +-
 ...cords-filter-and-nested-spatial-or-dateline.xml | 1132 ++++++++++++++++++++
 .../suites_atom_get_opensearch-description.xml     |   13 +
 ...uites_atom_get_opensearch-ogc-bbox-and-time.xml |   40 +
 .../suites_atom_get_opensearch-ogc-bbox.xml        |   54 +
 .../suites_atom_get_opensearch-ogc-q-and-bbox.xml  |   25 +
 .../suites_atom_get_opensearch-ogc-q-and-time.xml  |   16 +
 .../expected/suites_atom_get_opensearch-ogc-q.xml  |   16 +
 .../suites_atom_get_opensearch-ogc-time.xml        |   16 +
 .../suites_atom_get_opensearch-ogc-timeend.xml     |   16 +
 .../suites_atom_get_opensearch-ogc-timestart.xml   |   47 +
 tests/expected/suites_atom_get_opensearch.xml      |    8 +-
 .../expected/suites_atom_post_GetCapabilities.xml  |    3 +
 ...te_get_27e17158-c57a-4493-92ac-dba8934cf462.xml |    3 +
 ...te_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml |    3 +
 ...te_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml |    3 +
 ...te_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml |    3 +
 ...te_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml |    3 +
 ...te_get_80f31def-4185-48b9-983a-960566918eae.xml |    3 +
 ...te_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml |    3 +
 ...te_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml |    3 +
 ...te_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml |    3 +
 .../suites_default_get_GetCapabilities.xml         |    3 +
 .../suites_default_post_GetCapabilities-SOAP.xml   |    3 +
 ...default_post_GetCapabilities-updatesequence.xml |    3 +
 .../suites_default_post_GetCapabilities.xml        |    3 +
 tests/expected/suites_dif_post_GetCapabilities.xml |    3 +
 .../expected/suites_ebrim_post_GetCapabilities.xml |    3 +
 .../expected/suites_fgdc_post_GetCapabilities.xml  |    3 +
 .../suites_harvesting_post_GetCapabilities.xml     |    3 +
 .../suites_harvesting_post_Harvest-csw-iso.xml     |  105 ++
 ...t_Harvest-zzz-post-GetRecords-filter-ows-dc.xml |   44 +-
 ..._harvesting_post_Transaction-000-delete-all.xml |    2 +-
 .../suites_manager_post_GetCapabilities.xml        |    3 +
 ...es_oaipmh_get_GetRecord_bad_metadata_prefix.xml |    7 +
 tests/expected/suites_oaipmh_get_GetRecord_dc.xml  |   26 +
 tests/expected/suites_oaipmh_get_GetRecord_iso.xml |   62 ++
 .../suites_oaipmh_get_GetRecord_oai_dc.xml         |   26 +
 tests/expected/suites_oaipmh_get_Identify.xml      |   15 +
 ...pmh_get_ListIdentifiers_bad_metadata_prefix.xml |    7 +
 .../suites_oaipmh_get_ListIdentifiers_dc.xml       |   79 ++
 .../suites_oaipmh_get_ListIdentifiers_iso.xml      |   79 ++
 ...get_ListIdentifiers_missing_metadata_prefix.xml |    7 +
 .../suites_oaipmh_get_ListIdentifiers_oai_dc.xml   |   79 ++
 .../suites_oaipmh_get_ListMetadataFormats.xml      |   33 +
 .../expected/suites_oaipmh_get_ListRecords_dc.xml  |  185 ++++
 ...ipmh_get_ListRecords_dc_bad_metadata_prefix.xml |    7 +
 .../suites_oaipmh_get_ListRecords_iso19139.xml     |  588 ++++++++++
 .../suites_oaipmh_get_ListRecords_oai_dc.xml       |  185 ++++
 tests/expected/suites_oaipmh_get_ListSets.xml      |   16 +
 tests/expected/suites_oaipmh_get_bad_verb.xml      |    7 +
 tests/expected/suites_oaipmh_get_empty.xml         |    7 +
 .../expected/suites_oaipmh_get_empty_with_amp.xml  |    7 +
 tests/expected/suites_oaipmh_get_illegal_verb.xml  |    7 +
 .../expected/suites_utf-8_post_GetCapabilities.xml |    3 +
 tests/index.html                                   |  387 ++++---
 tests/run_tests.py                                 |    8 +
 ...cords-filter-and-nested-spatial-or-dateline.xml |   45 +
 tests/suites/atom/get/requests.txt                 |    9 +
 tests/suites/harvesting/post/Harvest-csw-iso.xml   |    7 +
 tests/suites/oaipmh/default.cfg                    |   91 ++
 tests/suites/oaipmh/get/requests.txt               |   20 +
 167 files changed, 4725 insertions(+), 707 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index bbf04e1..a25d57d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,6 +23,6 @@ after_script:
 notifications:
   irc:
     channels:
-      - "irc.freenode.org#geopython"
+      #- "irc.freenode.org#geopython"
       - "irc.freenode.org#pycsw"
     use_notice: true
diff --git a/VERSION.txt b/VERSION.txt
index 53adb84..81c871d 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-1.8.2
+1.10.0
diff --git a/bin/pycsw-admin.py b/bin/pycsw-admin.py
index ea11ddf..cff340d 100755
--- a/bin/pycsw-admin.py
+++ b/bin/pycsw-admin.py
@@ -61,7 +61,6 @@ SYNOPSIS
               - optimize_db
               - refresh_harvested_records
               - gen_sitemap
-              - gen_opensearch_description
               - post_xml
               - get_sysprof
               - validate_xml
@@ -119,10 +118,6 @@ EXAMPLES
 
         pycsw-admin.py -c gen_sitemap -f default.cfg -o /path/to/sitemap.xml
 
-    8.) gen_opensearch_description: Generate OpenSearch Description document
-
-        pycsw-admin.py -c gen_opensearch_description -f default.cfg -o /path/to/opensearch.xml
-
     8.) post_xml: Execute a CSW request via HTTP POST
 
         pycsw-admin.py -c post_xml -u http://host/csw -x /path/to/request.xml
@@ -188,7 +183,7 @@ if COMMAND is None:
 if COMMAND not in ['setup_db', 'load_records', 'export_records',
                    'rebuild_db_indexes', 'optimize_db',
                    'refresh_harvested_records', 'gen_sitemap',
-                   'gen_opensearch_description', 'post_xml', 'get_sysprof',
+                   'post_xml', 'get_sysprof',
                    'validate_xml']:
     print 'ERROR: invalid command name: %s' % COMMAND
     sys.exit(5)
@@ -201,8 +196,7 @@ if COMMAND in ['load_records', 'export_records'] and XML_DIRPATH is None:
     print 'ERROR: -p </path/to/records> is a required argument'
     sys.exit(7)
 
-if (COMMAND in ['gen_sitemap', 'gen_opensearch_description'] and
-        OUTPUT_FILE is None):
+if COMMAND == 'gen_sitemap' and OUTPUT_FILE is None:
     print 'ERROR: -o </path/to/sitemap.xml> is a required argument'
     sys.exit(8)
 
@@ -248,8 +242,6 @@ elif COMMAND == 'refresh_harvested_records':
     admin.refresh_harvested_records(CONTEXT, DATABASE, TABLE, URL)
 elif COMMAND == 'gen_sitemap':
     admin.gen_sitemap(CONTEXT, DATABASE, TABLE, URL, OUTPUT_FILE)
-elif COMMAND == 'gen_opensearch_description':
-    admin.gen_opensearch_description(CONTEXT, METADATA, URL, OUTPUT_FILE)
 elif COMMAND == 'post_xml':
     print admin.post_xml(CSW_URL, XML, TIMEOUT)
 elif COMMAND == 'get_sysprof':
diff --git a/docs/_build/doctrees/administration.doctree b/docs/_build/doctrees/administration.doctree
index f3c12c0..7aafb10 100644
Binary files a/docs/_build/doctrees/administration.doctree and b/docs/_build/doctrees/administration.doctree differ
diff --git a/docs/_build/doctrees/ckan.doctree b/docs/_build/doctrees/ckan.doctree
index 4d28084..87caaf1 100644
Binary files a/docs/_build/doctrees/ckan.doctree and b/docs/_build/doctrees/ckan.doctree differ
diff --git a/docs/_build/doctrees/committers.doctree b/docs/_build/doctrees/committers.doctree
index 7c64195..1619dba 100644
Binary files a/docs/_build/doctrees/committers.doctree and b/docs/_build/doctrees/committers.doctree differ
diff --git a/docs/_build/doctrees/configuration.doctree b/docs/_build/doctrees/configuration.doctree
index a456c01..6943190 100644
Binary files a/docs/_build/doctrees/configuration.doctree and b/docs/_build/doctrees/configuration.doctree differ
diff --git a/docs/_build/doctrees/contributing.doctree b/docs/_build/doctrees/contributing.doctree
index 5b4eb71..434c7a6 100644
Binary files a/docs/_build/doctrees/contributing.doctree and b/docs/_build/doctrees/contributing.doctree differ
diff --git a/docs/_build/doctrees/distributedsearching.doctree b/docs/_build/doctrees/distributedsearching.doctree
index eed2e1d..b6fcd6b 100644
Binary files a/docs/_build/doctrees/distributedsearching.doctree and b/docs/_build/doctrees/distributedsearching.doctree differ
diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
new file mode 100644
index 0000000..c52cb7d
Binary files /dev/null and b/docs/_build/doctrees/environment.pickle differ
diff --git a/docs/_build/doctrees/geonode.doctree b/docs/_build/doctrees/geonode.doctree
index 1974fd1..ca31bc7 100644
Binary files a/docs/_build/doctrees/geonode.doctree and b/docs/_build/doctrees/geonode.doctree differ
diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree
index e843d82..f8ad201 100644
Binary files a/docs/_build/doctrees/index.doctree and b/docs/_build/doctrees/index.doctree differ
diff --git a/docs/_build/doctrees/installation.doctree b/docs/_build/doctrees/installation.doctree
index f854911..6b30952 100644
Binary files a/docs/_build/doctrees/installation.doctree and b/docs/_build/doctrees/installation.doctree differ
diff --git a/docs/_build/doctrees/introduction.doctree b/docs/_build/doctrees/introduction.doctree
index 62966d3..3131457 100644
Binary files a/docs/_build/doctrees/introduction.doctree and b/docs/_build/doctrees/introduction.doctree differ
diff --git a/docs/_build/doctrees/license.doctree b/docs/_build/doctrees/license.doctree
index fc0d6c5..ffd9d88 100644
Binary files a/docs/_build/doctrees/license.doctree and b/docs/_build/doctrees/license.doctree differ
diff --git a/docs/_build/doctrees/oaipmh.doctree b/docs/_build/doctrees/oaipmh.doctree
new file mode 100644
index 0000000..034907e
Binary files /dev/null and b/docs/_build/doctrees/oaipmh.doctree differ
diff --git a/docs/_build/doctrees/odc.doctree b/docs/_build/doctrees/odc.doctree
index 63d36cf..7f8e8e0 100644
Binary files a/docs/_build/doctrees/odc.doctree and b/docs/_build/doctrees/odc.doctree differ
diff --git a/docs/_build/doctrees/opensearch.doctree b/docs/_build/doctrees/opensearch.doctree
index 8e853d6..e4de819 100644
Binary files a/docs/_build/doctrees/opensearch.doctree and b/docs/_build/doctrees/opensearch.doctree differ
diff --git a/docs/_build/doctrees/outputschemas.doctree b/docs/_build/doctrees/outputschemas.doctree
index 6e19be9..615a30e 100644
Binary files a/docs/_build/doctrees/outputschemas.doctree and b/docs/_build/doctrees/outputschemas.doctree differ
diff --git a/docs/_build/doctrees/profiles.doctree b/docs/_build/doctrees/profiles.doctree
index 9f4b76d..b82f00b 100644
Binary files a/docs/_build/doctrees/profiles.doctree and b/docs/_build/doctrees/profiles.doctree differ
diff --git a/docs/_build/doctrees/repofilters.doctree b/docs/_build/doctrees/repofilters.doctree
index daf79be..5138246 100644
Binary files a/docs/_build/doctrees/repofilters.doctree and b/docs/_build/doctrees/repofilters.doctree differ
diff --git a/docs/_build/doctrees/sitemaps.doctree b/docs/_build/doctrees/sitemaps.doctree
index 8e4ee54..68c5430 100644
Binary files a/docs/_build/doctrees/sitemaps.doctree and b/docs/_build/doctrees/sitemaps.doctree differ
diff --git a/docs/_build/doctrees/soap.doctree b/docs/_build/doctrees/soap.doctree
index 5faf494..062d2e1 100644
Binary files a/docs/_build/doctrees/soap.doctree and b/docs/_build/doctrees/soap.doctree differ
diff --git a/docs/_build/doctrees/sru.doctree b/docs/_build/doctrees/sru.doctree
index fe9b645..27ee49f 100644
Binary files a/docs/_build/doctrees/sru.doctree and b/docs/_build/doctrees/sru.doctree differ
diff --git a/docs/_build/doctrees/support.doctree b/docs/_build/doctrees/support.doctree
index 2af4d54..cbb8f0a 100644
Binary files a/docs/_build/doctrees/support.doctree and b/docs/_build/doctrees/support.doctree differ
diff --git a/docs/_build/doctrees/testing.doctree b/docs/_build/doctrees/testing.doctree
index cb61203..93509d2 100644
Binary files a/docs/_build/doctrees/testing.doctree and b/docs/_build/doctrees/testing.doctree differ
diff --git a/docs/_build/doctrees/tools.doctree b/docs/_build/doctrees/tools.doctree
index 3b270d6..de67a17 100644
Binary files a/docs/_build/doctrees/tools.doctree and b/docs/_build/doctrees/tools.doctree differ
diff --git a/docs/_build/doctrees/transactions.doctree b/docs/_build/doctrees/transactions.doctree
index 6684ef6..eb930a5 100644
Binary files a/docs/_build/doctrees/transactions.doctree and b/docs/_build/doctrees/transactions.doctree differ
diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo
new file mode 100644
index 0000000..76f402e
--- /dev/null
+++ b/docs/_build/html/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: da4805ca31316a9e6e3baed973900f98
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/_build/html/_sources/configuration.txt b/docs/_build/html/_sources/configuration.txt
index c69a434..85f44ff 100644
--- a/docs/_build/html/_sources/configuration.txt
+++ b/docs/_build/html/_sources/configuration.txt
@@ -12,7 +12,7 @@ pycsw's runtime configuration is defined by ``default.cfg``.  pycsw ships with a
 - **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
+- **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
 - **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)
diff --git a/docs/_build/html/_sources/index.txt b/docs/_build/html/_sources/index.txt
index 0ec3ea0..868fa6d 100644
--- a/docs/_build/html/_sources/index.txt
+++ b/docs/_build/html/_sources/index.txt
@@ -19,6 +19,7 @@ pycsw |release| Documentation
    distributedsearching
    sru
    opensearch
+   oaipmh
    soap
    sitemaps
    transactions
diff --git a/docs/_build/html/_sources/installation.txt b/docs/_build/html/_sources/installation.txt
index acec200..520ec86 100644
--- a/docs/_build/html/_sources/installation.txt
+++ b/docs/_build/html/_sources/installation.txt
@@ -61,7 +61,7 @@ Ensure that CGI is enabled for the install directory.  For example, on Apache, i
 .. code-block:: none
 
   <Location /pycsw/>
-   Options FollowSymLinks +ExecCGI
+   Options +FollowSymLinks +ExecCGI
    Allow from all
    AddHandler cgi-script .py
   </Location>
@@ -69,7 +69,7 @@ Ensure that CGI is enabled for the install directory.  For example, on Apache, i
 .. note::
   If pycsw is installed in ``cgi-bin``, this should work as expected.  In this case, the :ref:`tests <tests>` application must be moved to a different location to serve static HTML documents.
 
-Make shure, you have all the dependences from ``requirements.txt and requirements-standalone.txt``
+Make sure, you have all the dependencies from ``requirements.txt and requirements-standalone.txt``
 
 The Clean and Proper Way
 ^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/_build/html/_sources/introduction.txt b/docs/_build/html/_sources/introduction.txt
index df07d52..b799d30 100644
--- a/docs/_build/html/_sources/introduction.txt
+++ b/docs/_build/html/_sources/introduction.txt
@@ -15,7 +15,8 @@ Features
 - implements `FGDC CSDGM Application Profile for CSW 2.0`_
 - implements the Search/Retrieval via URL (`SRU`_) search protocol
 - implements Full Text Search capabilities
-- implements OpenSearch
+- implements OGC OpenSearch Geo and Time Extensions
+- implements Open Archives Initiative Protocol for Metadata Harvesting
 - supports ISO, Dublin Core, DIF, FGDC and Atom metadata models
 - CGI or WSGI deployment
 - simple configuration
@@ -60,7 +61,9 @@ Standards Support
 +-------------------+------------+
 | `SRU`_            | 1.1        | 
 +-------------------+------------+
-| `A9 OpenSearch`_  | 1.1        | 
+| `OGC OpenSearch`_ | 1.0        | 
++-------------------+------------+
+| `OAI-PMH`_        | 2.0        | 
 +-------------------+------------+
 
 Supported Operations
@@ -183,8 +186,9 @@ Functions
 .. _`FGDC CSDGM`: http://www.fgdc.gov/metadata/csdgm
 .. _`FGDC CSDGM Application Profile for CSW 2.0`: http://portal.opengeospatial.org/files/?artifact_id=16936
 .. _`SRU`: http://www.loc.gov/standards/sru/
-.. _`A9 OpenSearch`: http://www.opensearch.org/Home
+.. _`OGC OpenSearch`: http://www.opengeospatial.org/standards/opensearchgeo
 .. _`GeoNode`: http://geonode.org/
 .. _`Open Data Catalog`: https://github.com/azavea/Open-Data-Catalog/
 .. _`CKAN`: http://ckan.org/
 .. _`Compliant`: http://www.opengeospatial.org/resource/products/details/?pid=1104
+.. _`OAI-PMH`: http://www.openarchives.org/OAI/openarchivesprotocol.html
diff --git a/docs/_build/html/_sources/oaipmh.txt b/docs/_build/html/_sources/oaipmh.txt
new file mode 100644
index 0000000..07cd62f
--- /dev/null
+++ b/docs/_build/html/_sources/oaipmh.txt
@@ -0,0 +1,17 @@
+.. _oaipmh:
+
+OAI-PMH Support
+===============
+
+pycsw supports the `The Open Archives Initiative Protocol for Metadata Harvesting`_ (OAI-PMH) standard.
+
+OAI-PMH OpenSearch support is enabled by default.  HTTP requests must be specified with ``mode=oaipmh`` in the base URL for OAI-PMH requests, e.g.:
+
+.. code-block:: bash
+
+  http://localhost/pycsw/csw.py?mode=oaipmh&verb=Identify
+
+See http://www.openarchives.org/OAI/openarchivesprotocol.html for more information on OAI-PMH as well as request / reponse examples.
+
+.. _`The Open Archives Initiative Protocol for Metadata Harvesting`: http://www.openarchives.org/OAI/openarchivesprotocol.html
+
diff --git a/docs/_build/html/_sources/opensearch.txt b/docs/_build/html/_sources/opensearch.txt
index ac334ca..f6c6738 100644
--- a/docs/_build/html/_sources/opensearch.txt
+++ b/docs/_build/html/_sources/opensearch.txt
@@ -3,25 +3,18 @@
 OpenSearch Support
 ==================
 
-pycsw supports the `A9 OpenSearch`_ 1.1 implementation in support of aggregated searching.
+pycsw supports the `OGC OpenSearch Geo and Time Extensions 1.0`_ standard via the following conformance classes:
 
-Description Document
---------------------
+- Core (GeoSpatial Service) ``{searchTerms}``, ``{geo:box}``
+- Temporal Search core ``{time:start}``, ``{time:end}``
 
-To generate an OpenSearch Description Document:
+OpenSearch support is enabled by default.  HTTP requests must be specified with ``mode=opensearch`` in the base URL for OpenSearch requests, e.g.:
 
 .. code-block:: bash
 
-  $ cd /path/to/pycsw
-  $ export PYTHONPATH=`pwd` 
-  $ python-admin.py -c gen_opensearch_description -f default.cfg -o /path/to/opensearch.xml
-
-This will create the document which can then be `autodiscovered <http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery>`_.
+  http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities
 
-OpenSearch support is enabled by default.  HTTP requests must be specified with ``mode=opensearch`` in the base URL for OpenSearch requests, e.g.:
-
-.. code-block:: bash
+This will return the Description document which can then be `autodiscovered <http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery>`_.
 
-  http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&verison=2.0.2&request=GetRecords&elementsetname=brief&typenames=csw:Record&resulttype=results
+.. _`OGC OpenSearch Geo and Time Extensions 1.0`: http://www.opengeospatial.org/standards/opensearchgeo
 
-.. _`A9 OpenSearch`: http://www.opensearch.org/Home
diff --git a/docs/_build/html/_sources/tools.txt b/docs/_build/html/_sources/tools.txt
index fe8e79f..c07ba1b 100644
--- a/docs/_build/html/_sources/tools.txt
+++ b/docs/_build/html/_sources/tools.txt
@@ -8,7 +8,7 @@ CSW Clients
 
 - `Geoportal CSW Clients <http://sourceforge.net/apps/mediawiki/geoportal/index.php?title=Geoportal_CSW_Clients>`_
 - `OWSLib <http://geopython.github.io/OWSLib>`_
-- `qgcsw <http://geopython.github.io/qgcsw>`_ (`QGIS <http://qgis.org/>`_ plugin)
+- `MetaSearch <http://geopython.github.io/MetaSearch>`_ (`QGIS <http://qgis.org/>`_ plugin)
 
 CSW Servers
 -----------
diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css
index 967e36c..c959cf0 100644
--- a/docs/_build/html/_static/basic.css
+++ b/docs/_build/html/_static/basic.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/_build/html/_static/default.css b/docs/_build/html/_static/default.css
index 6f8f769..3ac1fa7 100644
--- a/docs/_build/html/_static/default.css
+++ b/docs/_build/html/_static/default.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- default theme.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js
index c5455c9..2036e5f 100644
--- a/docs/_build/html/_static/doctools.js
+++ b/docs/_build/html/_static/doctools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/_build/html/_static/pycsw-logo.png b/docs/_build/html/_static/pycsw-logo.png
new file mode 100644
index 0000000..0791115
Binary files /dev/null and b/docs/_build/html/_static/pycsw-logo.png differ
diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js
index 6e1f06b..f5c7e5f 100644
--- a/docs/_build/html/_static/searchtools.js
+++ b/docs/_build/html/_static/searchtools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilties for the full-text search.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/_build/html/_static/sidebar.js b/docs/_build/html/_static/sidebar.js
index 4f09a0d..874a890 100644
--- a/docs/_build/html/_static/sidebar.js
+++ b/docs/_build/html/_static/sidebar.js
@@ -16,7 +16,7 @@
  * Once the browser is closed the cookie is deleted and the position
  * reset to the default (expanded).
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/_build/html/_static/websupport.js b/docs/_build/html/_static/websupport.js
index 71c0a13..19fcda5 100644
--- a/docs/_build/html/_static/websupport.js
+++ b/docs/_build/html/_static/websupport.js
@@ -4,7 +4,7 @@
  *
  * sphinx.websupport utilties for all documentation.
  *
- * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/_build/html/administration.html b/docs/_build/html/administration.html
index eb5a1ef..918d406 100644
--- a/docs/_build/html/administration.html
+++ b/docs/_build/html/administration.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Administration — pycsw 1.8.2 documentation</title>
+    <title>Administration — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Distributed Searching" href="distributedsearching.html" />
     <link rel="prev" title="Configuration" href="configuration.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="configuration.html" title="Configuration"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -285,7 +285,7 @@ mappings=path/to/mappings.py
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -313,13 +313,23 @@ mappings=path/to/mappings.py
         <li class="right" >
           <a href="configuration.html" title="Configuration"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/ckan.html b/docs/_build/html/ckan.html
index 74ca224..c1fa075 100644
--- a/docs/_build/html/ckan.html
+++ b/docs/_build/html/ckan.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>CKAN Configuration — pycsw 1.8.2 documentation</title>
+    <title>CKAN Configuration — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Testing" href="testing.html" />
     <link rel="prev" title="Open Data Catalog Configuration" href="odc.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="odc.html" title="Open Data Catalog Configuration"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -121,7 +121,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -149,13 +149,23 @@
         <li class="right" >
           <a href="odc.html" title="Open Data Catalog Configuration"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/committers.html b/docs/_build/html/committers.html
index 984fd3f..7a47b6b 100644
--- a/docs/_build/html/committers.html
+++ b/docs/_build/html/committers.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Committers — pycsw 1.8.2 documentation</title>
+    <title>Committers — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="prev" title="License" href="license.html" />
  
 
@@ -60,7 +60,7 @@
         <li class="right" style="margin-right: 10px">
           <a href="license.html" title="License"
              accesskey="P">previous</a></li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -132,7 +132,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -157,13 +157,23 @@
         <li class="right" style="margin-right: 10px">
           <a href="license.html" title="License"
              >previous</a></li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/configuration.html b/docs/_build/html/configuration.html
index 1e66eff..2e9c0d3 100644
--- a/docs/_build/html/configuration.html
+++ b/docs/_build/html/configuration.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Configuration — pycsw 1.8.2 documentation</title>
+    <title>Configuration — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Administration" href="administration.html" />
     <link rel="prev" title="Installation" href="installation.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="installation.html" title="Installation"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -84,7 +84,7 @@
 <li><strong>mimetype</strong>: the MIME type when returning HTTP responses</li>
 <li><strong>language</strong>: the ISO 639-1 language and ISO 3166-1 alpha2 country code of the service (e.g. <tt class="docutils literal"><span class="pre">en-CA</span></tt>, <tt class="docutils literal"><span class="pre">fr-CA</span></tt>, <tt class="docutils literal"><span class="pre">en-US</span></tt>)</li>
 <li><strong>encoding</strong>: the content type encoding (e.g. <tt class="docutils literal"><span class="pre">ISO-8859-1</span></tt>)</li>
-<li><strong>maxrecords</strong>: the maximum number of records to return by default</li>
+<li><strong>maxrecords</strong>: the maximum number of records to return by default.  This value is enforced if a CSW’s client’s <tt class="docutils literal"><span class="pre">maxRecords</span></tt> parameter is greater than <tt class="docutils literal"><span class="pre">server.maxrecords</span></tt> to limit capacity</li>
 <li><strong>loglevel</strong>: the logging level (see <a class="reference external" href="http://docs.python.org/library/logging.html#logging-levels">http://docs.python.org/library/logging.html#logging-levels</a>)</li>
 <li><strong>logfile</strong>: the full file path to the logfile</li>
 <li><strong>ogc_schemas_base</strong>: base URL of OGC XML schemas tree file structure (default is <a class="reference external" href="http://schemas.opengis.net">http://schemas.opengis.net</a>)</li>
@@ -219,7 +219,7 @@ SetEnvIf Request_URI "/pycsw/csw-foo.py" PYCSW_CONFIG=/var/www/pycsw/c
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -247,13 +247,23 @@ SetEnvIf Request_URI "/pycsw/csw-foo.py" PYCSW_CONFIG=/var/www/pycsw/c
         <li class="right" >
           <a href="installation.html" title="Installation"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/contributing.html b/docs/_build/html/contributing.html
index 1dbcf48..5a5982b 100644
--- a/docs/_build/html/contributing.html
+++ b/docs/_build/html/contributing.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Contributing to pycsw — pycsw 1.8.2 documentation</title>
+    <title>Contributing to pycsw — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="License" href="license.html" />
     <link rel="prev" title="Support" href="support.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="support.html" title="Support"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -227,7 +227,7 @@ your own repository to ensure your pycsw repository is up to date with pycsw mas
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -255,13 +255,23 @@ your own repository to ensure your pycsw repository is up to date with pycsw mas
         <li class="right" >
           <a href="support.html" title="Support"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/distributedsearching.html b/docs/_build/html/distributedsearching.html
index a95e03d..bd2486f 100644
--- a/docs/_build/html/distributedsearching.html
+++ b/docs/_build/html/distributedsearching.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Distributed Searching — pycsw 1.8.2 documentation</title>
+    <title>Distributed Searching — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Search/Retrieval via URL (SRU) Support" href="sru.html" />
     <link rel="prev" title="Administration" href="administration.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="administration.html" title="Administration"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -169,7 +169,7 @@ CSW-1  CSW-2  CSW-3
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -197,13 +197,23 @@ CSW-1  CSW-2  CSW-3
         <li class="right" >
           <a href="administration.html" title="Administration"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/geonode.html b/docs/_build/html/geonode.html
index 7797233..7602b6b 100644
--- a/docs/_build/html/geonode.html
+++ b/docs/_build/html/geonode.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>GeoNode Configuration — pycsw 1.8.2 documentation</title>
+    <title>GeoNode Configuration — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Open Data Catalog Configuration" href="odc.html" />
     <link rel="prev" title="Output Schema Plugins" href="outputschemas.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="outputschemas.html" title="Output Schema Plugins"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -121,7 +121,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -149,13 +149,23 @@
         <li class="right" >
           <a href="outputschemas.html" title="Output Schema Plugins"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
index 092da69..97e04ac 100644
--- a/docs/_build/html/index.html
+++ b/docs/_build/html/index.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>pycsw 1.8.2 Documentation — pycsw 1.8.2 documentation</title>
+    <title>pycsw 1.10.0 Documentation — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="#" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="#" />
     <link rel="next" title="Introduction" href="introduction.html" />
  
 
@@ -60,7 +60,7 @@
         <li class="right" style="margin-right: 10px">
           <a href="introduction.html" title="Introduction"
              accesskey="N">next</a></li>
-        <li><a href="#">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="#">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -71,7 +71,7 @@
           <div class="body">
             
   <div class="section" id="pycsw-release-documentation">
-<span id="index"></span><h1>pycsw 1.8.2 Documentation<a class="headerlink" href="#pycsw-release-documentation" title="Permalink to this headline">¶</a></h1>
+<span id="index"></span><h1>pycsw 1.10.0 Documentation<a class="headerlink" href="#pycsw-release-documentation" title="Permalink to this headline">¶</a></h1>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -80,9 +80,9 @@
 </tr>
 <tr class="field-even field"><th class="field-name">Contact:</th><td class="field-body">tomkralidis at gmail.com</td>
 </tr>
-<tr class="field-odd field"><th class="field-name">Release:</th><td class="field-body">1.8.2</td>
+<tr class="field-odd field"><th class="field-name">Release:</th><td class="field-body">1.10.0</td>
 </tr>
-<tr class="field-even field"><th class="field-name">Date:</th><td class="field-body">2014-05-28</td>
+<tr class="field-even field"><th class="field-name">Date:</th><td class="field-body">2014-09-13</td>
 </tr>
 </tbody>
 </table>
@@ -129,10 +129,8 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="sru.html">Search/Retrieval via URL (SRU) Support</a></li>
-<li class="toctree-l1"><a class="reference internal" href="opensearch.html">OpenSearch Support</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="opensearch.html#description-document">Description Document</a></li>
-</ul>
-</li>
+<li class="toctree-l1"><a class="reference internal" href="opensearch.html">OpenSearch Support</a></li>
+<li class="toctree-l1"><a class="reference internal" href="oaipmh.html">OAI-PMH Support</a></li>
 <li class="toctree-l1"><a class="reference internal" href="soap.html">SOAP</a></li>
 <li class="toctree-l1"><a class="reference internal" href="sitemaps.html">XML Sitemaps</a></li>
 <li class="toctree-l1"><a class="reference internal" href="transactions.html">Transactions</a><ul>
@@ -235,7 +233,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -260,13 +258,23 @@
         <li class="right" style="margin-right: 10px">
           <a href="introduction.html" title="Introduction"
              >next</a></li>
-        <li><a href="#">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="#">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/installation.html b/docs/_build/html/installation.html
index 47464f8..62abf3a 100644
--- a/docs/_build/html/installation.html
+++ b/docs/_build/html/installation.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Installation — pycsw 1.8.2 documentation</title>
+    <title>Installation — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Configuration" href="configuration.html" />
     <link rel="prev" title="Introduction" href="introduction.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="introduction.html" title="Introduction"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -123,7 +123,7 @@
 </div>
 <p>Ensure that CGI is enabled for the install directory.  For example, on Apache, if pycsw is installed in <tt class="docutils literal"><span class="pre">/srv/www/htdocs/pycsw</span></tt> (where the URL will be <tt class="docutils literal"><span class="pre">http://host/pycsw/csw.py</span></tt>), add the following to <tt class="docutils literal"><span class="pre">httpd.conf</span></tt>:</p>
 <div class="highlight-none"><div class="highlight"><pre><Location /pycsw/>
- Options FollowSymLinks +ExecCGI
+ Options +FollowSymLinks +ExecCGI
  Allow from all
  AddHandler cgi-script .py
 </Location>
@@ -133,7 +133,7 @@
 <p class="first admonition-title">Note</p>
 <p class="last">If pycsw is installed in <tt class="docutils literal"><span class="pre">cgi-bin</span></tt>, this should work as expected.  In this case, the <a class="reference internal" href="testing.html#tests"><em>tests</em></a> application must be moved to a different location to serve static HTML documents.</p>
 </div>
-<p>Make shure, you have all the dependences from <tt class="docutils literal"><span class="pre">requirements.txt</span> <span class="pre">and</span> <span class="pre">requirements-standalone.txt</span></tt></p>
+<p>Make sure, you have all the dependencies from <tt class="docutils literal"><span class="pre">requirements.txt</span> <span class="pre">and</span> <span class="pre">requirements-standalone.txt</span></tt></p>
 </div>
 <div class="section" id="the-clean-and-proper-way">
 <h3>The Clean and Proper Way<a class="headerlink" href="#the-clean-and-proper-way" title="Permalink to this headline">¶</a></h3>
@@ -276,7 +276,7 @@ Serving on port 8000...
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -304,13 +304,23 @@ Serving on port 8000...
         <li class="right" >
           <a href="introduction.html" title="Introduction"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/introduction.html b/docs/_build/html/introduction.html
index 153c003..306ae09 100644
--- a/docs/_build/html/introduction.html
+++ b/docs/_build/html/introduction.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Introduction — pycsw 1.8.2 documentation</title>
+    <title>Introduction — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,9 +24,9 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Installation" href="installation.html" />
-    <link rel="prev" title="pycsw 1.8.2 Documentation" href="index.html" />
+    <link rel="prev" title="pycsw 1.10.0 Documentation" href="index.html" />
  
 
 <script type="text/javascript">
@@ -62,9 +62,9 @@
           <a href="installation.html" title="Installation"
              accesskey="N">next</a></li>
         <li class="right" >
-          <a href="index.html" title="pycsw 1.8.2 Documentation"
+          <a href="index.html" title="pycsw 1.10.0 Documentation"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -88,7 +88,8 @@
 <li>implements <a class="reference external" href="http://portal.opengeospatial.org/files/?artifact_id=16936">FGDC CSDGM Application Profile for CSW 2.0</a></li>
 <li>implements the Search/Retrieval via URL (<a class="reference external" href="http://www.loc.gov/standards/sru/">SRU</a>) search protocol</li>
 <li>implements Full Text Search capabilities</li>
-<li>implements OpenSearch</li>
+<li>implements OGC OpenSearch Geo and Time Extensions</li>
+<li>implements Open Archives Initiative Protocol for Metadata Harvesting</li>
 <li>supports ISO, Dublin Core, DIF, FGDC and Atom metadata models</li>
 <li>CGI or WSGI deployment</li>
 <li>simple configuration</li>
@@ -153,8 +154,11 @@
 <tr class="row-even"><td><a class="reference external" href="http://www.loc.gov/standards/sru/">SRU</a></td>
 <td>1.1</td>
 </tr>
-<tr class="row-odd"><td><a class="reference external" href="http://www.opensearch.org/Home">A9 OpenSearch</a></td>
-<td>1.1</td>
+<tr class="row-odd"><td><a class="reference external" href="http://www.opengeospatial.org/standards/opensearchgeo">OGC OpenSearch</a></td>
+<td>1.0</td>
+</tr>
+<tr class="row-even"><td><a class="reference external" href="http://www.openarchives.org/OAI/openarchivesprotocol.html">OAI-PMH</a></td>
+<td>2.0</td>
 </tr>
 </tbody>
 </table>
@@ -347,7 +351,7 @@
 
   <h4>Previous topic</h4>
   <p class="topless"><a href="index.html"
-                        title="previous chapter">pycsw 1.8.2 Documentation</a></p>
+                        title="previous chapter">pycsw 1.10.0 Documentation</a></p>
   <h4>Next topic</h4>
   <p class="topless"><a href="installation.html"
                         title="next chapter">Installation</a></p>
@@ -368,7 +372,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -394,15 +398,25 @@
           <a href="installation.html" title="Installation"
              >next</a></li>
         <li class="right" >
-          <a href="index.html" title="pycsw 1.8.2 Documentation"
+          <a href="index.html" title="pycsw 1.10.0 Documentation"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/license.html b/docs/_build/html/license.html
index 82a4dab..4f1a327 100644
--- a/docs/_build/html/license.html
+++ b/docs/_build/html/license.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>License — pycsw 1.8.2 documentation</title>
+    <title>License — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Committers" href="committers.html" />
     <link rel="prev" title="Contributing to pycsw" href="contributing.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="contributing.html" title="Contributing to pycsw"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -124,7 +124,7 @@ THE SOFTWARE.</p>
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -152,13 +152,23 @@ THE SOFTWARE.</p>
         <li class="right" >
           <a href="contributing.html" title="Contributing to pycsw"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/sru.html b/docs/_build/html/oaipmh.html
similarity index 68%
copy from docs/_build/html/sru.html
copy to docs/_build/html/oaipmh.html
index c53df8c..11b4674 100644
--- a/docs/_build/html/sru.html
+++ b/docs/_build/html/oaipmh.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Search/Retrieval via URL (SRU) Support — pycsw 1.8.2 documentation</title>
+    <title>OAI-PMH Support — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,9 +24,9 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
-    <link rel="next" title="OpenSearch Support" href="opensearch.html" />
-    <link rel="prev" title="Distributed Searching" href="distributedsearching.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
+    <link rel="next" title="SOAP" href="soap.html" />
+    <link rel="prev" title="OpenSearch Support" href="opensearch.html" />
  
 
 <script type="text/javascript">
@@ -59,12 +59,12 @@
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
-          <a href="opensearch.html" title="OpenSearch Support"
+          <a href="soap.html" title="SOAP"
              accesskey="N">next</a></li>
         <li class="right" >
-          <a href="distributedsearching.html" title="Distributed Searching"
+          <a href="opensearch.html" title="OpenSearch Support"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -74,14 +74,14 @@
         <div class="bodywrapper">
           <div class="body">
             
-  <div class="section" id="search-retrieval-via-url-sru-support">
-<span id="sru"></span><h1>Search/Retrieval via URL (SRU) Support<a class="headerlink" href="#search-retrieval-via-url-sru-support" title="Permalink to this headline">¶</a></h1>
-<p>pycsw supports the <a class="reference external" href="http://www.loc.gov/standards/sru/">Search/Retrieval via URL</a> search protocol implementation as per subclause 8.4 of the OpenGIS Catalogue Service Implementation Specification.</p>
-<p>SRU support is enabled by default.  HTTP GET requests must be specified with <tt class="docutils literal"><span class="pre">mode=sru</span></tt> for SRU requests, e.g.:</p>
-<div class="highlight-bash"><div class="highlight"><pre>http://localhost/pycsw/csw.py?mode<span class="o">=</span>sru&operation<span class="o">=</span>searchRetrieve&query<span class="o">=</span>foo
+  <div class="section" id="oai-pmh-support">
+<span id="oaipmh"></span><h1>OAI-PMH Support<a class="headerlink" href="#oai-pmh-support" title="Permalink to this headline">¶</a></h1>
+<p>pycsw supports the <a class="reference external" href="http://www.openarchives.org/OAI/openarchivesprotocol.html">The Open Archives Initiative Protocol for Metadata Harvesting</a> (OAI-PMH) standard.</p>
+<p>OAI-PMH OpenSearch support is enabled by default.  HTTP requests must be specified with <tt class="docutils literal"><span class="pre">mode=oaipmh</span></tt> in the base URL for OAI-PMH requests, e.g.:</p>
+<div class="highlight-bash"><div class="highlight"><pre>http://localhost/pycsw/csw.py?mode<span class="o">=</span>oaipmh&verb<span class="o">=</span>Identify
 </pre></div>
 </div>
-<p>See <a class="reference external" href="http://www.loc.gov/standards/sru/simple.html">http://www.loc.gov/standards/sru/simple.html</a> for example SRU requests.</p>
+<p>See <a class="reference external" href="http://www.openarchives.org/OAI/openarchivesprotocol.html">http://www.openarchives.org/OAI/openarchivesprotocol.html</a> for more information on OAI-PMH as well as request / reponse examples.</p>
 </div>
 
 
@@ -91,14 +91,14 @@
       <div class="sphinxsidebar">
         <div class="sphinxsidebarwrapper">
   <h4>Previous topic</h4>
-  <p class="topless"><a href="distributedsearching.html"
-                        title="previous chapter">Distributed Searching</a></p>
-  <h4>Next topic</h4>
   <p class="topless"><a href="opensearch.html"
-                        title="next chapter">OpenSearch Support</a></p>
+                        title="previous chapter">OpenSearch Support</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="soap.html"
+                        title="next chapter">SOAP</a></p>
   <h3>This Page</h3>
   <ul class="this-page-menu">
-    <li><a href="_sources/sru.txt"
+    <li><a href="_sources/oaipmh.txt"
            rel="nofollow">Show Source</a></li>
   </ul><p>
     <a title="This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web], Revision 2.0.2. OGC, OGC®, and CERTIFIED OGC COMPLIANT are trademarks or registered trademarks of the Open Geospatial Consortium, Inc. in the United States and other countries." href="http://www.opengeospatial.org/resource/products/details/?pid=1104"><img alt="This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Servi [...]
@@ -113,7 +113,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -136,18 +136,28 @@
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
-          <a href="opensearch.html" title="OpenSearch Support"
+          <a href="soap.html" title="SOAP"
              >next</a></li>
         <li class="right" >
-          <a href="distributedsearching.html" title="Distributed Searching"
+          <a href="opensearch.html" title="OpenSearch Support"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
new file mode 100644
index 0000000..d83ae48
--- /dev/null
+++ b/docs/_build/html/objects.inv
@@ -0,0 +1,8 @@
+# Sphinx inventory version 2
+# Project: pycsw
+# Version: 1.10.0
+# The remainder of this file is compressed using zlib.
+xڕU�n� ��W�.څ�f�]&�t�6�7jw#����ģ���`c� Q[�{��
a��F���m���h	���49���q���A!-m��F����@@�u�Y�!!)�+r�v��nK�d�3�R
+eP%r�s�>��c
�
+�ے²����0^�9-�z���W�I¥�rlhB߳�*l��wd

+�@����DN���d
X`�a�>�(�dd�(��P�,[�
V�༖{����ytt�t��S�ߙ4
p�rB�?�N�7�Xb+�M���C�E��[��r�!�S�������h����f��
-�6�Uo�PH �����CK��Y��5��ll�29B�˶QlgO�mh�:�6�G
�\���w�9����m�#*��"�c�
�{*�j�q���2�m�N���N��������6��\cr�O����I�!���~���
�G���Ү�K<����W�s��
���>Ů��v��ezLٕ�\V��+7�l���O��<�#"VQ�QT
+72���Ok�S�e��l+ȵ��;��n�y���չ:Q��p���ٝ��~��.�ۆu������F�
�r\�DT3���t�>4m���aɴ�x�,�u?=gR���ۤ�8��N�лB� }9|��N�~
Ǭ
�G�D�|�:
.��3Y�Op�u�4[&��w��j��IЄ�zC��o��7�a�y��l���%�?��`'����97
\ No newline at end of file
diff --git a/docs/_build/html/odc.html b/docs/_build/html/odc.html
index 7262419..c7053cc 100644
--- a/docs/_build/html/odc.html
+++ b/docs/_build/html/odc.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Open Data Catalog Configuration — pycsw 1.8.2 documentation</title>
+    <title>Open Data Catalog Configuration — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="CKAN Configuration" href="ckan.html" />
     <link rel="prev" title="GeoNode Configuration" href="geonode.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="geonode.html" title="GeoNode Configuration"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -122,7 +122,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -150,13 +150,23 @@
         <li class="right" >
           <a href="geonode.html" title="GeoNode Configuration"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/opensearch.html b/docs/_build/html/opensearch.html
index 05cd347..f1e4950 100644
--- a/docs/_build/html/opensearch.html
+++ b/docs/_build/html/opensearch.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>OpenSearch Support — pycsw 1.8.2 documentation</title>
+    <title>OpenSearch Support — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,8 +24,8 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
-    <link rel="next" title="SOAP" href="soap.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
+    <link rel="next" title="OAI-PMH Support" href="oaipmh.html" />
     <link rel="prev" title="Search/Retrieval via URL (SRU) Support" href="sru.html" />
  
 
@@ -59,12 +59,12 @@
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
-          <a href="soap.html" title="SOAP"
+          <a href="oaipmh.html" title="OAI-PMH Support"
              accesskey="N">next</a></li>
         <li class="right" >
           <a href="sru.html" title="Search/Retrieval via URL (SRU) Support"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -76,21 +76,16 @@
             
   <div class="section" id="opensearch-support">
 <span id="opensearch"></span><h1>OpenSearch Support<a class="headerlink" href="#opensearch-support" title="Permalink to this headline">¶</a></h1>
-<p>pycsw supports the <a class="reference external" href="http://www.opensearch.org/Home">A9 OpenSearch</a> 1.1 implementation in support of aggregated searching.</p>
-<div class="section" id="description-document">
-<h2>Description Document<a class="headerlink" href="#description-document" title="Permalink to this headline">¶</a></h2>
-<p>To generate an OpenSearch Description Document:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span><span class="nb">cd</span> /path/to/pycsw
-<span class="nv">$ </span><span class="nb">export </span><span class="nv">PYTHONPATH</span><span class="o">=</span><span class="sb">`</span><span class="nb">pwd</span><span class="sb">`</span>
-<span class="nv">$ </span>python-admin.py -c gen_opensearch_description -f default.cfg -o /path/to/opensearch.xml
-</pre></div>
-</div>
-<p>This will create the document which can then be <a class="reference external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery">autodiscovered</a>.</p>
+<p>pycsw supports the <a class="reference external" href="http://www.opengeospatial.org/standards/opensearchgeo">OGC OpenSearch Geo and Time Extensions 1.0</a> standard via the following conformance classes:</p>
+<ul class="simple">
+<li>Core (GeoSpatial Service) <tt class="docutils literal"><span class="pre">{searchTerms}</span></tt>, <tt class="docutils literal"><span class="pre">{geo:box}</span></tt></li>
+<li>Temporal Search core <tt class="docutils literal"><span class="pre">{time:start}</span></tt>, <tt class="docutils literal"><span class="pre">{time:end}</span></tt></li>
+</ul>
 <p>OpenSearch support is enabled by default.  HTTP requests must be specified with <tt class="docutils literal"><span class="pre">mode=opensearch</span></tt> in the base URL for OpenSearch requests, e.g.:</p>
-<div class="highlight-bash"><div class="highlight"><pre>http://localhost/pycsw/csw.py?mode<span class="o">=</span>opensearch&service<span class="o">=</span>CSW&verison<span class="o">=</span>2.0.2&request<span class="o">=</span>GetRecords&elementsetname<span class="o">=</span>brief&typenames<span class="o">=</span>csw:Record&resulttype<span class="o">=</span>results
+<div class="highlight-bash"><div class="highlight"><pre>http://localhost/pycsw/csw.py?mode<span class="o">=</span>opensearch&service<span class="o">=</span>CSW&version<span class="o">=</span>2.0.2&request<span class="o">=</span>GetCapabilities
 </pre></div>
 </div>
-</div>
+<p>This will return the Description document which can then be <a class="reference external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery">autodiscovered</a>.</p>
 </div>
 
 
@@ -99,20 +94,12 @@
       </div>
       <div class="sphinxsidebar">
         <div class="sphinxsidebarwrapper">
-  <h3><a href="index.html">Table Of Contents</a></h3>
-  <ul>
-<li><a class="reference internal" href="#">OpenSearch Support</a><ul>
-<li><a class="reference internal" href="#description-document">Description Document</a></li>
-</ul>
-</li>
-</ul>
-
   <h4>Previous topic</h4>
   <p class="topless"><a href="sru.html"
                         title="previous chapter">Search/Retrieval via URL (SRU) Support</a></p>
   <h4>Next topic</h4>
-  <p class="topless"><a href="soap.html"
-                        title="next chapter">SOAP</a></p>
+  <p class="topless"><a href="oaipmh.html"
+                        title="next chapter">OAI-PMH Support</a></p>
   <h3>This Page</h3>
   <ul class="this-page-menu">
     <li><a href="_sources/opensearch.txt"
@@ -130,7 +117,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -153,18 +140,28 @@
       <h3>Navigation</h3>
       <ul>
         <li class="right" style="margin-right: 10px">
-          <a href="soap.html" title="SOAP"
+          <a href="oaipmh.html" title="OAI-PMH Support"
              >next</a></li>
         <li class="right" >
           <a href="sru.html" title="Search/Retrieval via URL (SRU) Support"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/outputschemas.html b/docs/_build/html/outputschemas.html
index 8985f36..f5a029d 100644
--- a/docs/_build/html/outputschemas.html
+++ b/docs/_build/html/outputschemas.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Output Schema Plugins — pycsw 1.8.2 documentation</title>
+    <title>Output Schema Plugins — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="GeoNode Configuration" href="geonode.html" />
     <link rel="prev" title="Profile Plugins" href="profiles.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="profiles.html" title="Profile Plugins"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -151,7 +151,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -179,13 +179,23 @@
         <li class="right" >
           <a href="profiles.html" title="Profile Plugins"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/profiles.html b/docs/_build/html/profiles.html
index 35e38ff..f6372e1 100644
--- a/docs/_build/html/profiles.html
+++ b/docs/_build/html/profiles.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Profile Plugins — pycsw 1.8.2 documentation</title>
+    <title>Profile Plugins — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Output Schema Plugins" href="outputschemas.html" />
     <link rel="prev" title="Repository Filters" href="repofilters.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="repofilters.html" title="Repository Filters"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -275,7 +275,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -303,13 +303,23 @@
         <li class="right" >
           <a href="repofilters.html" title="Repository Filters"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/repofilters.html b/docs/_build/html/repofilters.html
index 389ff15..151d57a 100644
--- a/docs/_build/html/repofilters.html
+++ b/docs/_build/html/repofilters.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Repository Filters — pycsw 1.8.2 documentation</title>
+    <title>Repository Filters — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Profile Plugins" href="profiles.html" />
     <link rel="prev" title="Transactions" href="transactions.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="transactions.html" title="Transactions"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -264,7 +264,7 @@ filter=pycsw:ParentIdentifier != '33'
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -292,13 +292,23 @@ filter=pycsw:ParentIdentifier != '33'
         <li class="right" >
           <a href="transactions.html" title="Transactions"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html
index b5a0bb9..1004f78 100644
--- a/docs/_build/html/search.html
+++ b/docs/_build/html/search.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Search — pycsw 1.8.2 documentation</title>
+    <title>Search — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -25,7 +25,7 @@
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="_static/searchtools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
   <script type="text/javascript">
     jQuery(function() { Search.loadIndex("searchindex.js"); });
   </script>
@@ -64,7 +64,7 @@
     <div class="related">
       <h3>Navigation</h3>
       <ul>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -115,7 +115,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
         </div>
       </div>
@@ -124,13 +124,23 @@
     <div class="related">
       <h3>Navigation</h3>
       <ul>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
new file mode 100644
index 0000000..1a5b5db
--- /dev/null
+++ b/docs/_build/html/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({envversion:42,terms:{represent:9,all:[0,19,20,14,2,9,21,10,16,11,17],code:17,dist:19,consider:3,maximum:17,queri:[17,19,9,12,11,3,5],l165:3,prefix:21,get_sysprof:10,subclass:21,abil:[11,16,14],skin:3,follow:[0,19,20,1,14,2,9,21,16,11,17],disk:9,locat:9,content:17,depend:19,contact_instruct:17,descript:[10,17,9,1],core_namespac:21,granular:10,lower:7,typenam:[9,21],those:17,skip:10,aris:20,sent:14,contact_url:17,merchant:20,liter:16,string:9,fals:[17,21],account:10,util:9 [...]
\ No newline at end of file
diff --git a/docs/_build/html/sitemaps.html b/docs/_build/html/sitemaps.html
index 04ab49d..5b69d9e 100644
--- a/docs/_build/html/sitemaps.html
+++ b/docs/_build/html/sitemaps.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>XML Sitemaps — pycsw 1.8.2 documentation</title>
+    <title>XML Sitemaps — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Transactions" href="transactions.html" />
     <link rel="prev" title="SOAP" href="soap.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="soap.html" title="SOAP"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -112,7 +112,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -140,13 +140,23 @@
         <li class="right" >
           <a href="soap.html" title="SOAP"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/soap.html b/docs/_build/html/soap.html
index 060abe6..789e46f 100644
--- a/docs/_build/html/soap.html
+++ b/docs/_build/html/soap.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>SOAP — pycsw 1.8.2 documentation</title>
+    <title>SOAP — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,9 +24,9 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="XML Sitemaps" href="sitemaps.html" />
-    <link rel="prev" title="OpenSearch Support" href="opensearch.html" />
+    <link rel="prev" title="OAI-PMH Support" href="oaipmh.html" />
  
 
 <script type="text/javascript">
@@ -62,9 +62,9 @@
           <a href="sitemaps.html" title="XML Sitemaps"
              accesskey="N">next</a></li>
         <li class="right" >
-          <a href="opensearch.html" title="OpenSearch Support"
+          <a href="oaipmh.html" title="OAI-PMH Support"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -86,8 +86,8 @@
       <div class="sphinxsidebar">
         <div class="sphinxsidebarwrapper">
   <h4>Previous topic</h4>
-  <p class="topless"><a href="opensearch.html"
-                        title="previous chapter">OpenSearch Support</a></p>
+  <p class="topless"><a href="oaipmh.html"
+                        title="previous chapter">OAI-PMH Support</a></p>
   <h4>Next topic</h4>
   <p class="topless"><a href="sitemaps.html"
                         title="next chapter">XML Sitemaps</a></p>
@@ -108,7 +108,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -134,15 +134,25 @@
           <a href="sitemaps.html" title="XML Sitemaps"
              >next</a></li>
         <li class="right" >
-          <a href="opensearch.html" title="OpenSearch Support"
+          <a href="oaipmh.html" title="OAI-PMH Support"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/sru.html b/docs/_build/html/sru.html
index c53df8c..949d21e 100644
--- a/docs/_build/html/sru.html
+++ b/docs/_build/html/sru.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Search/Retrieval via URL (SRU) Support — pycsw 1.8.2 documentation</title>
+    <title>Search/Retrieval via URL (SRU) Support — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="OpenSearch Support" href="opensearch.html" />
     <link rel="prev" title="Distributed Searching" href="distributedsearching.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="distributedsearching.html" title="Distributed Searching"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -113,7 +113,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -141,13 +141,23 @@
         <li class="right" >
           <a href="distributedsearching.html" title="Distributed Searching"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/support.html b/docs/_build/html/support.html
index bd59157..8561ae8 100644
--- a/docs/_build/html/support.html
+++ b/docs/_build/html/support.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Support — pycsw 1.8.2 documentation</title>
+    <title>Support — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Contributing to pycsw" href="contributing.html" />
     <link rel="prev" title="Cataloguing and Metadata Tools" href="tools.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="tools.html" title="Cataloguing and Metadata Tools"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -119,7 +119,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -147,13 +147,23 @@
         <li class="right" >
           <a href="tools.html" title="Cataloguing and Metadata Tools"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/testing.html b/docs/_build/html/testing.html
index 05af511..001db40 100644
--- a/docs/_build/html/testing.html
+++ b/docs/_build/html/testing.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Testing — pycsw 1.8.2 documentation</title>
+    <title>Testing — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Cataloguing and Metadata Tools" href="tools.html" />
     <link rel="prev" title="CKAN Configuration" href="ckan.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="ckan.html" title="CKAN Configuration"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -197,7 +197,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -225,13 +225,23 @@
         <li class="right" >
           <a href="ckan.html" title="CKAN Configuration"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/tools.html b/docs/_build/html/tools.html
index 1fb6e11..9dd64d4 100644
--- a/docs/_build/html/tools.html
+++ b/docs/_build/html/tools.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Cataloguing and Metadata Tools — pycsw 1.8.2 documentation</title>
+    <title>Cataloguing and Metadata Tools — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Support" href="support.html" />
     <link rel="prev" title="Testing" href="testing.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="testing.html" title="Testing"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -81,7 +81,7 @@
 <ul class="simple">
 <li><a class="reference external" href="http://sourceforge.net/apps/mediawiki/geoportal/index.php?title=Geoportal_CSW_Clients">Geoportal CSW Clients</a></li>
 <li><a class="reference external" href="http://geopython.github.io/OWSLib">OWSLib</a></li>
-<li><a class="reference external" href="http://geopython.github.io/qgcsw">qgcsw</a> (<a class="reference external" href="http://qgis.org/">QGIS</a> plugin)</li>
+<li><a class="reference external" href="http://geopython.github.io/MetaSearch">MetaSearch</a> (<a class="reference external" href="http://qgis.org/">QGIS</a> plugin)</li>
 </ul>
 </div>
 <div class="section" id="csw-servers">
@@ -142,7 +142,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -170,13 +170,23 @@
         <li class="right" >
           <a href="testing.html" title="Testing"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_build/html/transactions.html b/docs/_build/html/transactions.html
index 24b14b7..9b7aab9 100644
--- a/docs/_build/html/transactions.html
+++ b/docs/_build/html/transactions.html
@@ -6,7 +6,7 @@
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Transactions — pycsw 1.8.2 documentation</title>
+    <title>Transactions — pycsw 1.10.0 documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -14,7 +14,7 @@
     <script type="text/javascript">
       var DOCUMENTATION_OPTIONS = {
         URL_ROOT:    './',
-        VERSION:     '1.8.2',
+        VERSION:     '1.10.0',
         COLLAPSE_INDEX: false,
         FILE_SUFFIX: '.html',
         HAS_SOURCE:  true
@@ -24,7 +24,7 @@
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <link rel="shortcut icon" href="_static/favicon.ico"/>
-    <link rel="top" title="pycsw 1.8.2 documentation" href="index.html" />
+    <link rel="top" title="pycsw 1.10.0 documentation" href="index.html" />
     <link rel="next" title="Repository Filters" href="repofilters.html" />
     <link rel="prev" title="XML Sitemaps" href="sitemaps.html" />
  
@@ -64,7 +64,7 @@
         <li class="right" >
           <a href="sitemaps.html" title="XML Sitemaps"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
   
@@ -242,7 +242,7 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
 <div id="searchbox" style="display: none">
   <h3>Quick search</h3>
@@ -270,13 +270,23 @@
         <li class="right" >
           <a href="sitemaps.html" title="XML Sitemaps"
              >previous</a> |</li>
-        <li><a href="index.html">pycsw 1.8.2 documentation</a> »</li> 
+        <li><a href="index.html">pycsw 1.10.0 documentation</a> »</li> 
       </ul>
     </div>
-    <div class="footer">
-        © Copyright 2010-2013, Tom Kralidis.
-      Last updated on 2014-05-28T19:55:04Z.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
-    </div>
+
+<div class="footer">
+    <p>© Copyright 2010-2014, Tom Kralidis. Last updated on 2014-09-13T21:48:09Z</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/_static/pycsw-logo.png b/docs/_static/pycsw-logo.png
new file mode 100644
index 0000000..0791115
Binary files /dev/null and b/docs/_static/pycsw-logo.png differ
diff --git a/docs/_templates/indexsidebar.html b/docs/_templates/indexsidebar.html
index 8e0b210..fabcb43 100644
--- a/docs/_templates/indexsidebar.html
+++ b/docs/_templates/indexsidebar.html
@@ -11,5 +11,5 @@
 </p>
 
 <p>
-    <script type="text/javascript" src="http://www.ohloh.net/p/488022/widgets/project_thin_badge.js"></script> 
+    <script type="text/javascript" src="https://www.openhub.net/p/488022/widgets/project_thin_badge.js"></script> 
 </p>
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
index 09e8dec..631e4ee 100644
--- a/docs/_templates/layout.html
+++ b/docs/_templates/layout.html
@@ -30,3 +30,20 @@
 
 {{ super() }}
 {% endblock %}
+
+{% block footer %}
+
+<div class="footer">
+    <p>© Copyright {{ copyright }}. Last updated on {{ last_updated }}</p>
+    <p>
+        <a href="http://pycsw.org">Website</a> —
+        <a href="http://pycsw.org/community">Community</a> —
+        <a href="http://pycsw.org/blog">Blog</a> —
+        <a href="https://plus.google.com/communities/104084873011085696113">Google+</a> —
+        <a href="http://pycsw.org/download">Download</a> —
+        <a href="https://github.com/geopython/pycsw">Source</a> —
+        <a href="https://github.com/geopython/pycsw/issues">Issues</a> —
+        <a href="http://lists.osgeo.org/mailman/listinfo/pycsw-devel">Mailing List</a>
+    </p>
+</div>
+{% endblock %}
diff --git a/docs/conf.py b/docs/conf.py
index 4fd8e48..a94111b 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -42,7 +42,7 @@ master_doc = 'index'
 # General information about the project.
 project = u'pycsw'
 authors = u'Tom Kralidis'
-copyright = u'2010-2013, ' + authors
+copyright = u'2010-2014, ' + authors
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -121,7 +121,7 @@ html_theme_options = {
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 # pixels large.
-html_favicon = 'favicon.ico'
+html_favicon = '_static/favicon.ico'
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
diff --git a/docs/configuration.rst b/docs/configuration.rst
index c69a434..85f44ff 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -12,7 +12,7 @@ pycsw's runtime configuration is defined by ``default.cfg``.  pycsw ships with a
 - **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
+- **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
 - **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)
diff --git a/docs/index.rst b/docs/index.rst
index 0ec3ea0..868fa6d 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -19,6 +19,7 @@ pycsw |release| Documentation
    distributedsearching
    sru
    opensearch
+   oaipmh
    soap
    sitemaps
    transactions
diff --git a/docs/installation.rst b/docs/installation.rst
index acec200..520ec86 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -61,7 +61,7 @@ Ensure that CGI is enabled for the install directory.  For example, on Apache, i
 .. code-block:: none
 
   <Location /pycsw/>
-   Options FollowSymLinks +ExecCGI
+   Options +FollowSymLinks +ExecCGI
    Allow from all
    AddHandler cgi-script .py
   </Location>
@@ -69,7 +69,7 @@ Ensure that CGI is enabled for the install directory.  For example, on Apache, i
 .. note::
   If pycsw is installed in ``cgi-bin``, this should work as expected.  In this case, the :ref:`tests <tests>` application must be moved to a different location to serve static HTML documents.
 
-Make shure, you have all the dependences from ``requirements.txt and requirements-standalone.txt``
+Make sure, you have all the dependencies from ``requirements.txt and requirements-standalone.txt``
 
 The Clean and Proper Way
 ^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/introduction.rst b/docs/introduction.rst
index df07d52..b799d30 100644
--- a/docs/introduction.rst
+++ b/docs/introduction.rst
@@ -15,7 +15,8 @@ Features
 - implements `FGDC CSDGM Application Profile for CSW 2.0`_
 - implements the Search/Retrieval via URL (`SRU`_) search protocol
 - implements Full Text Search capabilities
-- implements OpenSearch
+- implements OGC OpenSearch Geo and Time Extensions
+- implements Open Archives Initiative Protocol for Metadata Harvesting
 - supports ISO, Dublin Core, DIF, FGDC and Atom metadata models
 - CGI or WSGI deployment
 - simple configuration
@@ -60,7 +61,9 @@ Standards Support
 +-------------------+------------+
 | `SRU`_            | 1.1        | 
 +-------------------+------------+
-| `A9 OpenSearch`_  | 1.1        | 
+| `OGC OpenSearch`_ | 1.0        | 
++-------------------+------------+
+| `OAI-PMH`_        | 2.0        | 
 +-------------------+------------+
 
 Supported Operations
@@ -183,8 +186,9 @@ Functions
 .. _`FGDC CSDGM`: http://www.fgdc.gov/metadata/csdgm
 .. _`FGDC CSDGM Application Profile for CSW 2.0`: http://portal.opengeospatial.org/files/?artifact_id=16936
 .. _`SRU`: http://www.loc.gov/standards/sru/
-.. _`A9 OpenSearch`: http://www.opensearch.org/Home
+.. _`OGC OpenSearch`: http://www.opengeospatial.org/standards/opensearchgeo
 .. _`GeoNode`: http://geonode.org/
 .. _`Open Data Catalog`: https://github.com/azavea/Open-Data-Catalog/
 .. _`CKAN`: http://ckan.org/
 .. _`Compliant`: http://www.opengeospatial.org/resource/products/details/?pid=1104
+.. _`OAI-PMH`: http://www.openarchives.org/OAI/openarchivesprotocol.html
diff --git a/docs/oaipmh.rst b/docs/oaipmh.rst
new file mode 100644
index 0000000..07cd62f
--- /dev/null
+++ b/docs/oaipmh.rst
@@ -0,0 +1,17 @@
+.. _oaipmh:
+
+OAI-PMH Support
+===============
+
+pycsw supports the `The Open Archives Initiative Protocol for Metadata Harvesting`_ (OAI-PMH) standard.
+
+OAI-PMH OpenSearch support is enabled by default.  HTTP requests must be specified with ``mode=oaipmh`` in the base URL for OAI-PMH requests, e.g.:
+
+.. code-block:: bash
+
+  http://localhost/pycsw/csw.py?mode=oaipmh&verb=Identify
+
+See http://www.openarchives.org/OAI/openarchivesprotocol.html for more information on OAI-PMH as well as request / reponse examples.
+
+.. _`The Open Archives Initiative Protocol for Metadata Harvesting`: http://www.openarchives.org/OAI/openarchivesprotocol.html
+
diff --git a/docs/opensearch.rst b/docs/opensearch.rst
index ac334ca..f6c6738 100644
--- a/docs/opensearch.rst
+++ b/docs/opensearch.rst
@@ -3,25 +3,18 @@
 OpenSearch Support
 ==================
 
-pycsw supports the `A9 OpenSearch`_ 1.1 implementation in support of aggregated searching.
+pycsw supports the `OGC OpenSearch Geo and Time Extensions 1.0`_ standard via the following conformance classes:
 
-Description Document
---------------------
+- Core (GeoSpatial Service) ``{searchTerms}``, ``{geo:box}``
+- Temporal Search core ``{time:start}``, ``{time:end}``
 
-To generate an OpenSearch Description Document:
+OpenSearch support is enabled by default.  HTTP requests must be specified with ``mode=opensearch`` in the base URL for OpenSearch requests, e.g.:
 
 .. code-block:: bash
 
-  $ cd /path/to/pycsw
-  $ export PYTHONPATH=`pwd` 
-  $ python-admin.py -c gen_opensearch_description -f default.cfg -o /path/to/opensearch.xml
-
-This will create the document which can then be `autodiscovered <http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery>`_.
+  http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities
 
-OpenSearch support is enabled by default.  HTTP requests must be specified with ``mode=opensearch`` in the base URL for OpenSearch requests, e.g.:
-
-.. code-block:: bash
+This will return the Description document which can then be `autodiscovered <http://www.opensearch.org/Specifications/OpenSearch/1.1#Autodiscovery>`_.
 
-  http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&verison=2.0.2&request=GetRecords&elementsetname=brief&typenames=csw:Record&resulttype=results
+.. _`OGC OpenSearch Geo and Time Extensions 1.0`: http://www.opengeospatial.org/standards/opensearchgeo
 
-.. _`A9 OpenSearch`: http://www.opensearch.org/Home
diff --git a/docs/tools.rst b/docs/tools.rst
index fe8e79f..c07ba1b 100644
--- a/docs/tools.rst
+++ b/docs/tools.rst
@@ -8,7 +8,7 @@ CSW Clients
 
 - `Geoportal CSW Clients <http://sourceforge.net/apps/mediawiki/geoportal/index.php?title=Geoportal_CSW_Clients>`_
 - `OWSLib <http://geopython.github.io/OWSLib>`_
-- `qgcsw <http://geopython.github.io/qgcsw>`_ (`QGIS <http://qgis.org/>`_ plugin)
+- `MetaSearch <http://geopython.github.io/MetaSearch>`_ (`QGIS <http://qgis.org/>`_ plugin)
 
 CSW Servers
 -----------
diff --git a/etc/dist/debian/changelog b/etc/dist/debian/changelog
index c2bda19..300bdd4 100644
--- a/etc/dist/debian/changelog
+++ b/etc/dist/debian/changelog
@@ -1,3 +1,21 @@
+pycsw (1.8.2-0~trusty4) trusty; urgency=low
+
+  * Fixed Apache 2.4 configuration.
+
+ -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Sun, 08 Jun 2014 17:53:00 +0200
+
+pycsw (1.8.2-0~trusty3) trusty; urgency=low
+
+  * Added python-tz.
+
+ -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Thu, 05 Jun 2014 12:43:00 +0200
+
+pycsw (1.8.2-0~trusty2) trusty; urgency=low
+
+  * Update to 1.8.2.
+
+ -- Angelos Tzotsos <gcpp.kalxas at gmail.com>  Thu, 05 Jun 2014 02:16:00 +0200
+
 pycsw (1.6.1-0~precise1) precise; urgency=low
 
   * Update to 1.6.1.
diff --git a/etc/dist/debian/control b/etc/dist/debian/control
index 30fbeac..2e8cd36 100644
--- a/etc/dist/debian/control
+++ b/etc/dist/debian/control
@@ -9,7 +9,7 @@ Homepage: http://pycsw.org
 
 Package: python-pycsw
 Architecture: all
-Depends: ${misc:Depends}, debconf, python (>=2.5), python-lxml, python-shapely, python-pyproj, python-owslib
+Depends: ${misc:Depends}, debconf, python (>=2.5), python-lxml, python-shapely, python-pyproj, python-owslib, python-tz
 Description: pycsw is an OGC CSW server implementation written in Python.
 
 Package: pycsw-cgi
diff --git a/etc/dist/debian/pycsw-cgi.install b/etc/dist/debian/pycsw-cgi.install
index 9d24f93..8b884e5 100644
--- a/etc/dist/debian/pycsw-cgi.install
+++ b/etc/dist/debian/pycsw-cgi.install
@@ -1,13 +1,13 @@
-docs/*				/var/www/pycsw/docs/
-etc/harvest-all.cron		/var/www/pycsw/etc/
-etc/mappings.py			/var/www/pycsw/etc/
-bin/*				/var/www/pycsw/bin/
-tests/*				/var/www/pycsw/tests/
-etc/pycsw		       	/etc/apache2/conf.d/
+docs/*				/var/www/html/pycsw/docs/
+etc/harvest-all.cron		/var/www/html/pycsw/etc/
+etc/mappings.py			/var/www/html/pycsw/etc/
+bin/*				/var/www/html/pycsw/bin/
+tests/*				/var/www/html/pycsw/tests/
+etc/pycsw.conf		       	/etc/apache2/conf-enabled/
 etc/pycsw.desktop	       	/usr/share/applications/
-csw.py				/var/www/pycsw/
-LICENSE.txt			/var/www/pycsw/
-README.txt			/var/www/pycsw/
-VERSION.txt			/var/www/pycsw/
-HISTORY.txt			/var/www/pycsw/
-default-sample.cfg		/var/www/pycsw/
+csw.py				/var/www/html/pycsw/
+LICENSE.txt			/var/www/html/pycsw/
+README.txt			/var/www/html/pycsw/
+VERSION.txt			/var/www/html/pycsw/
+HISTORY.txt			/var/www/html/pycsw/
+default-sample.cfg		/var/www/html/pycsw/
diff --git a/etc/dist/debian/pycsw-cgi.postinst b/etc/dist/debian/pycsw-cgi.postinst
index 6b85492..b689580 100644
--- a/etc/dist/debian/pycsw-cgi.postinst
+++ b/etc/dist/debian/pycsw-cgi.postinst
@@ -18,11 +18,12 @@ set -e
 # the debian-policy package
 
 install() {
-    cd /var/www/pycsw/tests
+    cd /var/www/html/pycsw/tests
     python ./gen_html.py > index.html
-    cd /var/www/pycsw
+    cd /var/www/html/pycsw
     cp default-sample.cfg default.cfg
-    /etc/init.d/apache2 force-reload
+    a2enmod cgi
+    /etc/init.d/apache2 restart
 
 }
 
diff --git a/etc/dist/opensuse/python-pycsw.spec b/etc/dist/opensuse/python-pycsw.spec
index 57b8d4e..6056103 100644
--- a/etc/dist/opensuse/python-pycsw.spec
+++ b/etc/dist/opensuse/python-pycsw.spec
@@ -34,7 +34,7 @@
 %define pyname pycsw
 
 Name:           python-%{pyname}
-Version:        1.6.0
+Version:        1.10.0
 Release:        1
 License:        MIT
 Summary:        An OGC CSW server implementation written in Python
diff --git a/etc/dist/osgeolive/install_pycsw.sh b/etc/dist/osgeolive/install_pycsw.sh
index 0b69418..5af5eeb 100755
--- a/etc/dist/osgeolive/install_pycsw.sh
+++ b/etc/dist/osgeolive/install_pycsw.sh
@@ -35,7 +35,7 @@ if [ -z "$USER_NAME" ] ; then
 fi
 USER_HOME="/home/$USER_NAME"
 
-# VERSION=1.6.0
+# VERSION=1.10.0
 
 echo 'Installing pycsw dependencies ...'
 
diff --git a/etc/pycsw.conf b/etc/pycsw.conf
new file mode 100644
index 0000000..d402735
--- /dev/null
+++ b/etc/pycsw.conf
@@ -0,0 +1,5 @@
+<Directory /var/www/html/pycsw>
+  Options +FollowSymLinks +ExecCGI
+  Require all granted
+  AddHandler cgi-script .py
+</Directory>
diff --git a/etc/pycsw.desktop b/etc/pycsw.desktop
index 1e8b4b7..5c5b5f7 100644
--- a/etc/pycsw.desktop
+++ b/etc/pycsw.desktop
@@ -5,7 +5,7 @@ Name=pycsw
 Comment=pycsw catalog server
 Categories=Application;Education;Geography;
 Exec=firefox http://localhost/pycsw/tests/index.html
-Icon=/var/www/pycsw/docs/_static/pycsw-logo.png
+Icon=/var/www/html/pycsw/docs/_static/pycsw-logo.png
 Terminal=false
 StartupNotify=false
 Categories=Education;Geography;
diff --git a/pycsw-1.8.2.tar b/pycsw-1.8.2.tar
deleted file mode 100644
index 9df6499..0000000
Binary files a/pycsw-1.8.2.tar and /dev/null differ
diff --git a/pycsw/__init__.py b/pycsw/__init__.py
index b9ffed7..79ffc47 100644
--- a/pycsw/__init__.py
+++ b/pycsw/__init__.py
@@ -28,4 +28,4 @@
 #
 # =================================================================
 
-__version__ = '1.8.2'
+__version__ = '1.10.0'
diff --git a/pycsw/admin.py b/pycsw/admin.py
index eecbcba..f8f1231 100644
--- a/pycsw/admin.py
+++ b/pycsw/admin.py
@@ -483,41 +483,6 @@ def gen_sitemap(context, database, table, url, output_file):
                     encoding='utf8', xml_declaration=1))
 
 
-def gen_opensearch_description(context, mdata, url, output_file):
-    """generate an OpenSearch Description document"""
-
-    node0 = etree.Element('OpenSearchDescription',
-                          nsmap={None: context.namespaces['os']})
-
-    etree.SubElement(node0, 'ShortName').text = 'pycsw'
-    etree.SubElement(node0, 'LongName').text = mdata['identification_title']
-    etree.SubElement(node0, 'Description').text = \
-        mdata['identification_abstract']
-    etree.SubElement(node0, 'Tags').text = \
-        ' '.join(mdata['identification_keywords'].split(','))
-
-    node1 = etree.SubElement(node0, 'Url')
-    node1.set('type', 'text/html')
-    node1.set('method', 'get')
-    node1.set('template', '%s?mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=brief&typenames=csw:Record&resulttype=results&constraintlanguage=CQL_TEXT&constraint_language_version=1.1.0&constraint=csw:AnyText like "%%{searchTerms}%%" ' % url)
-
-    node1 = etree.SubElement(node0, 'Image')
-    node1.set('type', 'image/vnd.microsoft.icon')
-    node1.set('width', '16')
-    node1.set('height', '16')
-    node1.text = 'http://pycsw.org/_static/favicon.ico'
-
-    etree.SubElement(node0, 'Developer').text = mdata['contact_name']
-    etree.SubElement(node0, 'Contact').text = mdata['contact_email']
-    etree.SubElement(node0, 'Attribution').text = mdata['provider_name']
-
-    # write to file
-    LOGGER.info('Writing to %s', output_file)
-    with open(output_file, 'w') as ofile:
-        ofile.write(etree.tostring(node0, pretty_print=1,
-                    encoding='UTF-8', xml_declaration=1))
-
-
 def post_xml(url, xml, timeout=30):
     """Execute HTTP XML POST request and print response"""
 
@@ -573,9 +538,11 @@ def get_sysprof():
     SQLAlchemy: %s
     Shapely: %s
     lxml: %s
+    libxml2: %s
     pyproj: %s
     OWSLib: %s''' % (sys.version_info, sys.platform, vsqlalchemy,
-                     vshapely, etree.__version__, vpyproj, vowslib)
+                     vshapely, etree.__version__, etree.LIBXML_VERSION,
+                     vpyproj, vowslib)
 
 
 def validate_xml(xml, xsd):
diff --git a/pycsw/config.py b/pycsw/config.py
index ad6c9f6..b9f9aef 100644
--- a/pycsw/config.py
+++ b/pycsw/config.py
@@ -236,6 +236,9 @@ class StaticContext(object):
                 }
             },
             'constraints': {
+                'MaxRecordDefault': {
+                    'values': ['10']
+                },
                 'PostEncoding': {
                     'values': ['XML', 'SOAP']
                 },
diff --git a/pycsw/fes.py b/pycsw/fes.py
index e25b473..be75363 100644
--- a/pycsw/fes.py
+++ b/pycsw/fes.py
@@ -132,7 +132,17 @@ def parse(element, queryables, dbtype, nsmap, orm='sqlalchemy', language='englis
                                    nsmap)).text, str(err)))
 
         if (elem.tag != util.nspath_eval('ogc:PropertyIsBetween', nsmap)):
-            pval = elem.find(util.nspath_eval('ogc:Literal', nsmap)).text
+            if elem.tag in [util.nspath_eval('ogc:%s' % n, nsmap) for n in
+                MODEL['SpatialOperators']['values']]:
+                boolean_true = '\'true\''
+                boolean_false = '\'false\''
+                if dbtype == 'mysql':
+                    boolean_true = 'true'
+                    boolean_false = 'false'
+
+                return "%s = %s" % (_get_spatial_operator(queryables['pycsw:BoundingBox'], elem, dbtype, nsmap), boolean_true)
+            else:
+                pval = elem.find(util.nspath_eval('ogc:Literal', nsmap)).text
 
         com_op = _get_comparison_operator(elem)
         LOGGER.debug('Comparison operator: %s' % com_op)
diff --git a/pycsw/metadata.py b/pycsw/metadata.py
index 52e4e5b..4bca386 100644
--- a/pycsw/metadata.py
+++ b/pycsw/metadata.py
@@ -34,6 +34,7 @@ from urlparse import urlparse
 from lxml import etree
 from owslib.util import build_get_url
 from pycsw import util
+from geolinks.links import sniff_link
 
 LOGGER = logging.getLogger(__name__)
 
@@ -144,8 +145,9 @@ def _parse_csw(context, repos, record, identifier, pagesize=10):
     serviceobj = repos.dataset()
 
     # if init raises error, this might not be a CSW
-    md = CatalogueServiceWeb(record)
+    md = CatalogueServiceWeb(record, timeout=60)
 
+    LOGGER.debug('Setting CSW service metadata')
     # generate record of service instance
     _set(context, serviceobj, 'pycsw:Identifier', identifier)
     _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')
@@ -183,13 +185,24 @@ def _parse_csw(context, repos, record, identifier, pagesize=10):
     # get all supported typenames of metadata
     # so we can harvest the entire CSW
 
+    # try for ISO, settle for Dublin Core
     csw_typenames = 'csw:Record'
+    csw_outputschema = 'http://www.opengis.net/cat/csw/2.0.2'
+
+    grop = md.get_operation_by_name('GetRecords')
+    if all(['gmd:MD_Metadata' in grop.parameters['typeNames']['values'],
+            'http://www.isotc211.org/2005/gmd' in grop.parameters['outputSchema']['values']]):
+        LOGGER.info('CSW supports ISO')
+        csw_typenames = 'gmd:MD_Metadata'
+        csw_outputschema = 'http://www.isotc211.org/2005/gmd'
+
 
     # now get all records
     # get total number of records to loop against
 
     try:
-        md.getrecords2(typenames=csw_typenames, resulttype='hits')
+        md.getrecords2(typenames=csw_typenames, resulttype='hits',
+                       outputschema=csw_outputschema)
         matches = md.results['matches']
     except:  # this is a CSW, but server rejects query
         raise RuntimeError(md.response)
@@ -203,11 +216,14 @@ def _parse_csw(context, repos, record, identifier, pagesize=10):
     for r in range(1, matches, pagesize):
         try:
             md.getrecords2(typenames=csw_typenames, startposition=r,
-                          maxrecords=pagesize)
+                           maxrecords=pagesize, outputschema=csw_outputschema, esn='full')
         except Exception, err:  # this is a CSW, but server rejects query
             raise RuntimeError(md.response)
         for k, v in md.records.iteritems():
-            recobjs.append(_parse_dc(context, repos, etree.fromstring(v.xml)))
+            if csw_typenames == 'gmd:MD_Metadata':
+                recobjs.append(_parse_iso(context, repos, etree.fromstring(v.xml)))
+            else:
+                recobjs.append(_parse_dc(context, repos, etree.fromstring(v.xml)))
 
     return recobjs
 
@@ -852,16 +868,23 @@ def _parse_iso(context, repos, exml):
             _set(context, recobj, 'pycsw:Keywords', ','.join(all_keywords))
             _set(context, recobj, 'pycsw:KeywordType', md.identification.keywords[0]['type'])
 
-        if hasattr(md.identification, 'creator'):
-            _set(context, recobj, 'pycsw:Creator', md.identification.creator)
-        if hasattr(md.identification, 'publisher'):
-            _set(context, recobj, 'pycsw:Publisher', md.identification.publisher)
-        if hasattr(md.identification, 'contributor'):
-            _set(context, recobj, 'pycsw:Contributor', md.identification.contributor)
+        if (hasattr(md.identification, 'creator') and
+            len(md.identification.creator) > 0):
+            all_orgs = set([item.organization for item in md.identification.creator if hasattr(item, 'organization') and item.organization is not None])
+            _set(context, recobj, 'pycsw:Creator', ';'.join(all_orgs))
+        if (hasattr(md.identification, 'publisher') and
+            len(md.identification.publisher) > 0):
+            all_orgs = set([item.organization for item in md.identification.publisher if hasattr(item, 'organization') and item.organization is not None])
+            _set(context, recobj, 'pycsw:Publisher', ';'.join(all_orgs))
+        if (hasattr(md.identification, 'contributor') and
+            len(md.identification.contributor) > 0):
+            all_orgs = set([item.organization for item in md.identification.contributor if hasattr(item, 'organization') and item.organization is not None])
+            _set(context, recobj, 'pycsw:Contributor', ';'.join(all_orgs))
 
         if (hasattr(md.identification, 'contact') and 
-        hasattr(md.identification.contact, 'organization')):
-            _set(context, recobj, 'pycsw:OrganizationName', md.identification.contact.organization)
+            len(md.identification.contact) > 0):
+            all_orgs = set([item.organization for item in md.identification.contact if hasattr(item, 'organization') and item.organization is not None])
+            _set(context, recobj, 'pycsw:OrganizationName', ';'.join(all_orgs))
 
         if len(md.identification.securityconstraints) > 0:
             _set(context, recobj, 'pycsw:SecurityConstraints', 
@@ -937,6 +960,8 @@ def _parse_iso(context, repos, exml):
             for dist_member in md.distribution.distributor:
                 dist_links.extend(dist_member.online)
         for link in dist_links:
+            if link.url is not None and link.protocol is None:  # take a best guess
+                link.protocol = sniff_link(link.url)
             linkstr = '%s,%s,%s,%s' % \
             (link.name, link.description, link.protocol, link.url)
             links.append(linkstr)
diff --git a/pycsw/oaipmh.py b/pycsw/oaipmh.py
new file mode 100644
index 0000000..59a1df6
--- /dev/null
+++ b/pycsw/oaipmh.py
@@ -0,0 +1,283 @@
+# -*- coding: iso-8859-15 -*-
+# =================================================================
+#
+# Authors: Tom Kralidis <tomkralidis at gmail.com>
+#
+# Copyright (c) 2014 Tom Kralidis
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+# =================================================================
+
+import logging
+from lxml import etree
+from pycsw import fes, util
+
+LOGGER = logging.getLogger(__name__)
+
+class OAIPMH(object):
+    """OAI-PMH wrapper class"""
+    def __init__(self, context, config):
+        LOGGER.debug('Initializing OAI-PMH constants')
+        self.oaipmh_version = '2.0'
+
+        self.namespaces = {
+            'oai': 'http://www.openarchives.org/OAI/2.0/',
+            'oai_dc': 'http://www.openarchives.org/OAI/2.0/oai_dc/',
+            'xsi': 'http://www.w3.org/2001/XMLSchema-instance'
+        }
+        self.request_model = {
+            'Identify': [],
+            'ListSets': ['resumptiontoken'],
+            'ListMetadataFormats': ['identifier'],
+            'GetRecord': ['identifier', 'metadataprefix'],
+            'ListRecords': ['from', 'until', 'set', 'resumptiontoken', 'metadataprefix'],
+            'ListIdentifiers': ['from', 'until', 'set', 'resumptiontoken', 'metadataprefix'],
+        }
+        self.metadata_formats = {
+            'iso19139': {
+                'namespace': 'http://www.isotc211.org/2005/gmd',
+                'schema': 'http://www.isotc211.org/2005/gmd/gmd.xsd',
+                'identifier': '//gmd:fileIdentifier/gco:CharacterString',
+                'dateStamp': '//gmd:dateStamp/gco:DateTime|//gmd:dateStamp/gco:Date',
+                'setSpec': '//gmd:hierarchyLevel/gmd:MD_ScopeCode'
+            },
+            'csw-record': {
+                'namespace': 'http://www.opengis.net/cat/csw/2.0.2',
+                'schema': 'http://schemas.opengis.net/csw/2.0.2/record.xsd',
+                'identifier': '//dc:identifier',
+                'dateStamp': '//dct:modified',
+                'setSpec': '//dc:type'
+            },
+            'fgdc-std': {
+                'namespace': 'http://www.opengis.net/cat/csw/csdgm',
+                'schema': 'http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd',
+                'identifier': '//idinfo/datasetid',
+                'dateStamp': '//metainfo/metd',
+                'setSpec': '//dataset'
+            },
+            'oai_dc': {
+                'namespace': '%soai_dc/' % self.namespaces['oai'],
+                'schema': 'http://www.openarchives.org/OAI/2.0/oai_dc.xsd',
+                'identifier': '//dc:identifier',
+                'dateStamp': '//dct:modified',
+                'setSpec': '//dc:type'
+            },
+            'dif': {
+                'namespace': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/',
+                'schema': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd',
+                'identifier': '//dif:Entry_ID',
+                'dateStamp': '//dif:Last_DIF_Revision_Date',
+                'setSpec': '//dataset'
+            }
+        }
+        self.metadata_sets = {
+            'datasets': ('Datasets', 'dataset'),
+            'interactiveResources': ('Interactive Resources', 'service')
+        }
+        self.error_codes = {
+            'badArgument': 'InvalidParameterValue',
+            'badVerb': 'OperationNotSupported',
+            'idDoesNotExist': None,
+            'noRecordsMatch': None,
+        }
+
+        self.context = context
+        self.context.namespaces.update(self.namespaces)
+        self.context.namespaces.update({'gco': 'http://www.isotc211.org/2005/gco'})
+        self.config = config
+
+    def request(self, kvp):
+        """process OAI-PMH request"""
+        kvpout = {'service': 'CSW', 'version': '2.0.2', 'mode': 'oaipmh'}
+        LOGGER.debug('Incoming kvp: %s' % kvp)
+        if 'verb' in kvp:
+            if 'metadataprefix' in kvp:
+                self.metadata_prefix = kvp['metadataprefix']
+                try:
+                    kvpout['outputschema'] = self._get_metadata_prefix(kvp['metadataprefix'])
+                except KeyError:
+                    kvpout['outputschema'] = kvp['metadataprefix']
+            else:
+                self.metadata_prefix = 'csw-record'
+            LOGGER.info('metadataPrefix: %s' % self.metadata_prefix)
+            if kvp['verb'] in ['ListRecords', 'ListIdentifiers', 'GetRecord']:
+                kvpout['request'] = 'GetRecords'
+                kvpout['resulttype'] = 'results'
+                kvpout['typenames'] = 'csw:Record'
+                kvpout['elementsetname'] = 'full'
+            if kvp['verb'] in ['Identify', 'ListMetadataFormats', 'ListSets']:
+                kvpout['request'] = 'GetCapabilities'
+            elif kvp['verb'] == 'GetRecord':
+                kvpout['request'] = 'GetRecordById'
+                if 'identifier' in kvp:
+                    kvpout['id'] = kvp['identifier']
+                if ('outputschema' in kvpout and
+                    kvp['metadataprefix'] == 'oai_dc'):  # just use default DC
+                    del kvpout['outputschema'] 
+            elif kvp['verb'] in ['ListRecords', 'ListIdentifiers']:
+                if 'resumptiontoken' in kvp:
+                    kvpout['startposition'] = kvp['resumptiontoken']
+                if ('outputschema' in kvpout and
+                   kvp['verb'] == 'ListIdentifiers'):  # simple output only
+                    pass #del kvpout['outputschema'] 
+                if ('outputschema' in kvpout and
+                    kvp['metadataprefix'] in ['dc', 'oai_dc']):  # just use default DC
+                    del kvpout['outputschema'] 
+
+
+                start = end = None
+                LOGGER.info('Scanning temporal parameters')
+                if 'from' in kvp:
+                    start = 'dc:date >= %s' % kvp['from']
+                if 'until' in kvp:
+                    end = 'dc:date <= %s' % kvp['until']
+                if any([start is not None, end is not None]):
+                    if all([start is not None, end is not None]):
+                        time_query = '%s and %s' % (start, end)
+                    elif end is None:
+                        time_query = start
+                    elif start is None:
+                        time_query = end
+                    kvpout['constraintlanguage'] = 'CQL_TEXT'
+                    kvpout['constraint'] = time_query
+        LOGGER.debug('Resulting parameters: %s' % kvpout)
+        return kvpout
+
+    def response(self, response, kvp, repository, server_url):
+        """process OAI-PMH request"""
+
+        mode = kvp.pop('mode', None)
+        if 'config' in kvp:
+            config_val = kvp.pop('config')
+        url = '%smode=oaipmh' % util.bind_url(server_url)
+
+        node = etree.Element(util.nspath_eval('oai:OAI-PMH', self.namespaces), nsmap=self.namespaces)
+        node.set(util.nspath_eval('xsi:schemaLocation', self.namespaces), '%s http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd' % self.namespaces['oai'])
+        LOGGER.info(etree.tostring(node))
+
+        etree.SubElement(node, util.nspath_eval('oai:responseDate', self.namespaces)).text = util.get_today_and_now()
+        etree.SubElement(node, util.nspath_eval('oai:request', self.namespaces), attrib=kvp).text = url
+
+        if 'verb' not in kvp:
+            etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Missing \'verb\' parameter'
+            return node
+
+        if kvp['verb'] not in self.request_model.keys():
+            etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Unknown verb \'%s\'' % kvp['verb']
+            return node
+
+        if util.xmltag_split(response.tag) == 'ExceptionReport':
+            etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = response.xpath('//ows:ExceptionText', namespaces=self.context.namespaces)[0].text
+            return node
+
+        verb = kvp.pop('verb')
+
+        if verb in ['GetRecord', 'ListIdentifiers', 'ListRecords']:
+            if 'metadataprefix' not in kvp:
+                etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Missing metadataPrefix parameter'
+                return node
+            elif kvp['metadataprefix'] not in self.metadata_formats.keys():
+                etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Invalid metadataPrefix parameter'
+                return node
+
+        for key, value in kvp.iteritems():
+            if key != 'mode' and key not in self.request_model[verb]:
+                etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Illegal parameter \'%s\'' % key
+                return node
+
+        verbnode = etree.SubElement(node, util.nspath_eval('oai:%s' % verb, self.namespaces))
+
+        if verb == 'Identify':
+                etree.SubElement(verbnode, util.nspath_eval('oai:repositoryName', self.namespaces)).text = self.config.get('metadata:main', 'identification_title')
+                etree.SubElement(verbnode, util.nspath_eval('oai:baseURL', self.namespaces)).text = url
+                etree.SubElement(verbnode, util.nspath_eval('oai:protocolVersion', self.namespaces)).text = '2.0'
+                etree.SubElement(verbnode, util.nspath_eval('oai:adminEmail', self.namespaces)).text = self.config.get('metadata:main', 'contact_email')
+                etree.SubElement(verbnode, util.nspath_eval('oai:earliestDatestamp', self.namespaces)).text = repository.query_insert('min')
+                etree.SubElement(verbnode, util.nspath_eval('oai:deletedRecord', self.namespaces)).text = 'no'
+                etree.SubElement(verbnode, util.nspath_eval('oai:granularity', self.namespaces)).text = 'YYYY-MM-DDThh:mm:ssZ'
+
+        elif verb == 'ListSets':
+            for key, value in self.metadata_sets.iteritems():
+                setnode = etree.SubElement(verbnode, util.nspath_eval('oai:set', self.namespaces))
+                etree.SubElement(setnode, util.nspath_eval('oai:setSpec', self.namespaces)).text = key
+                etree.SubElement(setnode, util.nspath_eval('oai:setName', self.namespaces)).text = value[0]
+
+        elif verb == 'ListMetadataFormats':
+            for key, value in self.metadata_formats.iteritems():
+                mdfnode = etree.SubElement(verbnode, util.nspath_eval('oai:metadataFormat', self.namespaces))
+                etree.SubElement(mdfnode, util.nspath_eval('oai:metadataPrefix', self.namespaces)).text = key
+                etree.SubElement(mdfnode, util.nspath_eval('oai:schema', self.namespaces)).text = value['schema']
+                etree.SubElement(mdfnode, util.nspath_eval('oai:metadataNamespace', self.namespaces)).text = value['namespace']
+
+        elif verb in ['GetRecord', 'ListIdentifiers', 'ListRecords']:
+                if verb == 'GetRecord':  # GetRecordById
+                    records = response.getchildren()
+                else:  # GetRecords
+                    records = response.getchildren()[1].getchildren()
+                for child in records:
+                    recnode = etree.SubElement(verbnode, util.nspath_eval('oai:record', self.namespaces))
+                    header = etree.SubElement(recnode, util.nspath_eval('oai:header', self.namespaces))
+                    self._transform_element(header, response, 'oai:identifier')
+                    self._transform_element(header, response, 'oai:dateStamp')
+                    self._transform_element(header, response, 'oai:setSpec')
+                    if verb in ['GetRecord', 'ListRecords']:
+                        metadata = etree.SubElement(recnode, util.nspath_eval('oai:metadata', self.namespaces))
+                        if 'metadataprefix' in kvp and kvp['metadataprefix'] == 'oai_dc':
+                            child.tag = util.nspath_eval('oai_dc:dc', self.namespaces)
+                        metadata.append(child)
+                if verb != 'GetRecord':
+                    complete_list_size = response.xpath('//@numberOfRecordsMatched')[0]
+                    next_record = response.xpath('//@nextRecord')[0]
+                    cursor = str(int(complete_list_size) - int(next_record) - 1)
+                
+                    resumption_token = etree.SubElement(verbnode, util.nspath_eval('oai:resumptionToken', self.namespaces),
+                                                        completeListSize=complete_list_size, cursor=cursor).text = next_record
+        return node
+
+    def _get_metadata_prefix(self, prefix):
+        """Convenience function to return metadataPrefix as CSW outputschema"""
+        try:
+            outputschema = self.metadata_formats[prefix]['namespace']
+        except KeyError:
+            outputschema = prefix
+        return outputschema
+
+    def _transform_element(self, parent, element, elname):
+        """tests for existence of a given xpath, writes out text if exists"""
+
+        xpath = self.metadata_formats[self.metadata_prefix][elname.split(':')[1]]
+        if xpath.startswith('//'):
+            value = element.xpath(xpath, namespaces=self.context.namespaces)
+            if value:
+                value = value[0].text
+        else:  # bare string literal
+            value = xpath
+        el = etree.SubElement(parent, util.nspath_eval(elname, self.context.namespaces))
+        if value:
+            if elname == 'oai:setSpec': 
+                value = None
+                for k, v in self.metadata_sets.iteritems():
+                    if v[1] == elname:
+                        value = k
+                        break
+            el.text = value
diff --git a/pycsw/opensearch.py b/pycsw/opensearch.py
index e99d504..9a6e50d 100644
--- a/pycsw/opensearch.py
+++ b/pycsw/opensearch.py
@@ -2,8 +2,9 @@
 # =================================================================
 #
 # Authors: Tom Kralidis <tomkralidis at gmail.com>
+#          Angelos Tzotsos <tzotsos at gmail.com>
 #
-# Copyright (c) 2012 Tom Kralidis
+# Copyright (c) 2014 Tom Kralidis, Angelos Tzotsos
 #
 # Permission is hereby granted, free of charge, to any person
 # obtaining a copy of this software and associated documentation
@@ -30,6 +31,9 @@
 
 from lxml import etree
 from pycsw import util
+import logging
+
+LOGGER = logging.getLogger(__name__)
 
 class OpenSearch(object):
     """OpenSearch wrapper class"""
@@ -39,31 +43,221 @@ class OpenSearch(object):
 
         self.namespaces = {
             'atom': 'http://www.w3.org/2005/Atom',
-            'opensearch': 'http://a9.com/-/spec/opensearch/1.1/'
+            'geo': 'http://a9.com/-/opensearch/extensions/geo/1.0/',
+            'os': 'http://a9.com/-/spec/opensearch/1.1/',
+            'time': 'http://a9.com/-/opensearch/extensions/time/1.0/'
         }
 
         self.context = context
-        self.context.namespaces.update(self.namespaces)
+        #self.context.namespaces.update(self.namespaces)
 
     def response_csw2opensearch(self, element, cfg):
         """transform a CSW response into an OpenSearch response"""
 
+        LOGGER.debug('RESPONSE: %s', util.xmltag_split(element.tag))
         if util.xmltag_split(element.tag) == 'GetRecordsResponse':
 
-            startindex = int(element.xpath('//@nextRecord')[0]) - int(element.xpath('//@numberOfRecordsReturned')[0])
+            startindex = int(element.xpath('//@nextRecord')[0]) - int(
+                        element.xpath('//@numberOfRecordsReturned')[0])
             if startindex < 1:
                 startindex = 1
 
-            node = etree.Element(util.nspath_eval('atom:feed', self.context.namespaces), nsmap=self.namespaces)
-            etree.SubElement(node, util.nspath_eval('atom:id', self.context.namespaces)).text = cfg.get('server', 'url')
-            etree.SubElement(node, util.nspath_eval('atom:title', self.context.namespaces)).text = cfg.get('metadata:main', 'identification_title')
-            #etree.SubElement(node, util.nspath_eval('atom:updated', self.context.namespaces)).text = element.xpath('//@timestamp')[0]
+            node = etree.Element(util.nspath_eval('atom:feed',
+                       self.context.namespaces), nsmap=self.namespaces)
+            etree.SubElement(node, util.nspath_eval('atom:id',
+                       self.context.namespaces)).text = cfg.get('server', 'url')
+            etree.SubElement(node, util.nspath_eval('atom:title',
+                       self.context.namespaces)).text = cfg.get('metadata:main',
+                       'identification_title')
+            #etree.SubElement(node, util.nspath_eval('atom:updated',
+            #  self.context.namespaces)).text = element.xpath('//@timestamp')[0]
 
-            etree.SubElement(node, util.nspath_eval('opensearch:totalResults', self.context.namespaces)).text = element.xpath('//@numberOfRecordsMatched')[0]
-            etree.SubElement(node, util.nspath_eval('opensearch:startIndex', self.context.namespaces)).text = str(startindex)
-            etree.SubElement(node, util.nspath_eval('opensearch:itemsPerPage', self.context.namespaces)).text = element.xpath('//@numberOfRecordsReturned')[0]
+            etree.SubElement(node, util.nspath_eval('os:totalResults',
+                        self.context.namespaces)).text = element.xpath(
+                        '//@numberOfRecordsMatched')[0]
+            etree.SubElement(node, util.nspath_eval('os:startIndex',
+                        self.context.namespaces)).text = str(startindex)
+            etree.SubElement(node, util.nspath_eval('os:itemsPerPage',
+                        self.context.namespaces)).text = element.xpath(
+                        '//@numberOfRecordsReturned')[0]
 
-            for rec in element.xpath('//atom:entry', namespaces=self.context.namespaces):
+            for rec in element.xpath('//atom:entry',
+                        namespaces=self.context.namespaces):
                 node.append(rec)
+        elif util.xmltag_split(element.tag) == 'Capabilities':
+            node = etree.Element('OpenSearchDescription', nsmap={None: self.namespaces['os']})
+            etree.SubElement(node, 'ShortName').text = element.xpath('//ows:Title', namespaces=self.context.namespaces)[0].text
+            etree.SubElement(node, 'LongName').text = element.xpath('//ows:Title', namespaces=self.context.namespaces)[0].text
+            etree.SubElement(node, 'Description').text = element.xpath('//ows:Abstract', namespaces=self.context.namespaces)[0].text
+            etree.SubElement(node, 'Tags').text = ' '.join(x.text for x in element.xpath('//ows:Keyword', namespaces=self.context.namespaces))
+
+            node1 = etree.SubElement(node, 'Url')
+            node1.set('type', 'application/atom+xml')
+            node1.set('method', 'get')
+            node1.set('template', '%s?mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q={searchTerms?}&bbox={geo:box?}&time={time:start?}/{time:end?}' % element.xpath('//ows:Get/@xlink:href', namespaces=self.context.namespaces)[0])
+
+            node1 = etree.SubElement(node, 'Image')
+            node1.set('type', 'image/vnd.microsoft.icon')
+            node1.set('width', '16')
+            node1.set('height', '16')
+            node1.text = 'http://pycsw.org/img/favicon.ico'
+
+            etree.SubElement(node, 'Developer').text = element.xpath('//ows:IndividualName', namespaces=self.context.namespaces)[0].text
+            etree.SubElement(node, 'Contact').text = element.xpath('//ows:ElectronicMailAddress', namespaces=self.context.namespaces)[0].text
+            etree.SubElement(node, 'Attribution').text = element.xpath('//ows:ProviderName', namespaces=self.context.namespaces)[0].text
+        elif util.xmltag_split(element.tag) == 'ExceptionReport':
+            node = element
+        else:  # return Description document
+            node = etree.Element(util.nspath_eval('os:Description', self.context.namespaces))
 
         return node
+
+
+def kvp2filterxml(kvp, context):
+
+    filter_xml = ""
+    valid_xml = ""
+
+    # Count parameters
+    par_count = 0
+    for p in ['q','bbox','time']:
+        if p in kvp:
+            par_count += 1
+
+    # Create root element for FilterXML
+    root = etree.Element(util.nspath_eval('ogc:Filter',
+                context.namespaces))
+
+    # bbox to FilterXML
+    if 'bbox' in kvp:
+        bbox_list = [x.strip() for x in kvp['bbox'].split(',')]
+        bbox_element = etree.Element(util.nspath_eval('ogc:BBOX',
+                    context.namespaces))
+        el = etree.Element(util.nspath_eval('ogc:PropertyName',
+                    context.namespaces))
+        el.text = 'ows:BoundingBox'
+        bbox_element.append(el)
+        env = etree.Element(util.nspath_eval('gml:Envelope',
+                    context.namespaces))
+        el = etree.Element(util.nspath_eval('gml:lowerCorner',
+                    context.namespaces))
+        try:
+            el.text = "%s %s" % (bbox_list[0], bbox_list[1])
+        except Exception, err:
+            errortext = 'Exception: OpenSearch bbox not valid.\nError: %s.' % str(err)
+            LOGGER.debug(errortext)
+        env.append(el)
+        el = etree.Element(util.nspath_eval('gml:upperCorner',
+                    context.namespaces))
+        try:
+            el.text = "%s %s" % (bbox_list[2], bbox_list[3])
+        except Exception, err:
+            errortext = 'Exception: OpenSearch bbox not valid.\nError: %s.' % str(err)
+            LOGGER.debug(errortext)
+        env.append(el)
+        bbox_element.append(env)
+
+    # q to FilterXML
+    if 'q' in kvp:
+        anytext_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo',
+                    context.namespaces))
+        el = etree.Element(util.nspath_eval('ogc:PropertyName',
+                    context.namespaces))
+        el.text = 'csw:AnyText'
+        anytext_element.append(el)
+        el = etree.Element(util.nspath_eval('ogc:Literal',
+                    context.namespaces))
+        el.text = kvp['q']
+        anytext_element.append(el)
+
+    # time to FilterXML
+    if 'time' in kvp:
+        time_list = kvp['time'].split("/")
+        time_element = None
+        if (len(time_list) == 2):
+            # This is a normal request
+            if '' not in time_list:
+                # Both dates are present
+                time_element = etree.Element(util.nspath_eval('ogc:PropertyIsBetween',
+                            context.namespaces))
+                el = etree.Element(util.nspath_eval('ogc:PropertyName',
+                            context.namespaces))
+                el.text = 'dc:date'
+                time_element.append(el)
+                el = etree.Element(util.nspath_eval('ogc:LowerBoundary',
+                            context.namespaces))
+                el2 = etree.Element(util.nspath_eval('ogc:Literal',
+                            context.namespaces))
+                el2.text = time_list[0]
+                el.append(el2)
+                time_element.append(el)
+                el = etree.Element(util.nspath_eval('ogc:UpperBoundary',
+                            context.namespaces))
+                el2 = etree.Element(util.nspath_eval('ogc:Literal',
+                            context.namespaces))
+                el2.text = time_list[1]
+                el.append(el2)
+                time_element.append(el)
+            else:
+                # One of two is empty
+                if time_list[1] is '':
+                    time_element = etree.Element(util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo',
+                                context.namespaces))
+                    el = etree.Element(util.nspath_eval('ogc:PropertyName',
+                                context.namespaces))
+                    el.text = 'dc:date'
+                    time_element.append(el)
+                    el = etree.Element(util.nspath_eval('ogc:Literal',
+                                context.namespaces))
+                    el.text = time_list[0]
+                    time_element.append(el)
+                else:
+                    time_element = etree.Element(util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo',
+                                context.namespaces))
+                    el = etree.Element(util.nspath_eval('ogc:PropertyName',
+                                context.namespaces))
+                    el.text = 'dc:date'
+                    time_element.append(el)
+                    el = etree.Element(util.nspath_eval('ogc:Literal',
+                                context.namespaces))
+                    el.text = time_list[1]
+                    time_element.append(el)
+        elif ((len(time_list) == 1) and ('' not in time_list)):
+            # This is an equal request
+            time_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo',
+                        context.namespaces))
+            el = etree.Element(util.nspath_eval('ogc:PropertyName',
+                        context.namespaces))
+            el.text = 'dc:date'
+            time_element.append(el)
+            el = etree.Element(util.nspath_eval('ogc:Literal',
+                        context.namespaces))
+            el.text = time_list[0]
+            time_element.append(el)
+        else:
+            # Error
+            errortext = 'Exception: OpenSearch time not valid: %s.' % str(kvp['time'])
+            LOGGER.debug(errortext)
+
+    if (par_count == 1):
+        # Only one OpenSearch parameter exists
+        if 'bbox' in kvp:
+            root.append(bbox_element)
+        elif 'time' in kvp:
+            root.append(time_element)
+        elif 'q' in kvp:
+            root.append(anytext_element)
+    elif (par_count > 1):
+        # Since more than 1 parameter, append the AND logical operator
+        logical_and = etree.Element(util.nspath_eval('ogc:And',
+                context.namespaces))
+        if 'bbox' in kvp:
+            logical_and.append(bbox_element)
+        if 'time' in kvp:
+            logical_and.append(time_element)
+        if 'q' in kvp:
+            logical_and.append(anytext_element)
+        root.append(logical_and)
+
+    # Render etree to string XML
+    return etree.tostring(root)
diff --git a/pycsw/plugins/repository/geonode/geonode_.py b/pycsw/plugins/repository/geonode/geonode_.py
index dd256a8..7645da7 100644
--- a/pycsw/plugins/repository/geonode/geonode_.py
+++ b/pycsw/plugins/repository/geonode/geonode_.py
@@ -99,9 +99,12 @@ class GeoNodeRepository(object):
                 return objects.values_list(domain).distinct()
 
 
-    def query_latest_insert(self):
-        ''' Query to get latest update to repository '''
+    def query_insert(self, direction='max'):
+        ''' Query to get latest (default) or earliest update to repository '''
         from datetime import datetime
+        if direction=='min':
+            return ResourceBase.objects.aggregate(
+                Min('date'))['date__min'].strftime('%Y-%m-%dT%H:%M:%SZ')
         return self._get_repo_filter(ResourceBase.objects).aggregate(
             Max('date'))['date__max'].strftime('%Y-%m-%dT%H:%M:%SZ')
 
diff --git a/pycsw/plugins/repository/odc/odc.py b/pycsw/plugins/repository/odc/odc.py
index b427023..583f6ab 100644
--- a/pycsw/plugins/repository/odc/odc.py
+++ b/pycsw/plugins/repository/odc/odc.py
@@ -107,9 +107,12 @@ class OpenDataCatalogRepository(object):
             else:
                 return objects.values_list(domain).distinct()
 
-    def query_latest_insert(self):
-        ''' Query to get latest update to repository '''
+    def query_insert(self, direction='max'):
+        ''' Query to get latest (default) or earliest update to repository '''
         from datetime import datetime
+        if direction == 'min':
+            return Resource.objects.aggregate(
+                Min('last_updated'))['last_updated__min'].strftime('%Y-%m-%dT%H:%M:%SZ')
         return self._get_repo_filter(Resource.objects).aggregate(
             Max('last_updated'))['last_updated__max'].strftime('%Y-%m-%dT%H:%M:%SZ')
 
diff --git a/pycsw/repository.py b/pycsw/repository.py
index b633e09..3e5a8e6 100644
--- a/pycsw/repository.py
+++ b/pycsw/repository.py
@@ -219,11 +219,14 @@ class Repository(object):
                 query = self.session.query(domain_value).distinct()
         return self._get_repo_filter(query).all()
 
-    def query_latest_insert(self):
-        ''' Query to get latest update to repository '''
+    def query_insert(self, direction='max'):
+        ''' Query to get latest (default) or earliest update to repository '''
         column = getattr(self.dataset, \
         self.context.md_core_model['mappings']['pycsw:InsertDate'])
 
+        if direction == 'min':
+            return self._get_repo_filter(self.session.query(func.min(column))).first()[0]
+        # else default max
         return self._get_repo_filter(self.session.query(func.max(column))).first()[0]
 
     def query_source(self, source):
diff --git a/pycsw/server.py b/pycsw/server.py
index 60a479b..f078e5e 100644
--- a/pycsw/server.py
+++ b/pycsw/server.py
@@ -39,7 +39,7 @@ from ConfigParser import SafeConfigParser
 from lxml import etree
 from pycsw.plugins.profiles import profile as pprofile
 import pycsw.plugins.outputschemas
-from pycsw import config, fes, log, metadata, util, sru, opensearch
+from pycsw import config, fes, log, metadata, util, sru, oaipmh, opensearch
 import logging
 
 LOGGER = logging.getLogger(__name__)
@@ -61,6 +61,7 @@ class Csw(object):
         # (it will permanently update global cfg namespaces)
         self.sruobj = None
         self.opensearchobj = None
+        self.oaipmhobj = None
 
         # init kvp
         self.kvp = {}
@@ -170,6 +171,11 @@ class Csw(object):
                 self.context.model\
                 ['constraints']['FederatedCatalogues']['values'].append(fedcat)
 
+        LOGGER.debug('Setting MaxRecordDefault')
+        if self.config.has_option('server', 'maxrecords'):
+            self.context.model['constraints']['MaxRecordDefault']['values'] = \
+            [self.config.get('server', 'maxrecords')]
+
         LOGGER.debug('Configuration: %s.' % self.config)
         LOGGER.debug('Model: %s.' % self.context.model)
 
@@ -397,6 +403,12 @@ class Csw(object):
 
         return self.sruobj
 
+    def oaipmh(self):
+        ''' enable OAI-PMH '''
+        if not self.oaipmhobj:
+            self.oaipmhobj = oaipmh.OAIPMH(self.context, self.config)
+        return self.oaipmhobj
+
     def dispatch(self, writer=sys.stdout, write_headers=True):
         ''' Handle incoming HTTP request '''
 
@@ -427,6 +439,13 @@ class Csw(object):
             LOGGER.debug('OpenSearch mode detected; processing request.')
             self.kvp['outputschema'] = 'http://www.w3.org/2005/Atom'
 
+        if (not isinstance(self.kvp, str) and
+        'mode' in self.kvp and self.kvp['mode'] == 'oaipmh'):
+            self.mode = 'oaipmh'
+            LOGGER.debug('OAI-PMH mode detected; processing request.')
+            self.oaiargs =  dict((k, v) for k, v in self.kvp.items() if k)
+            self.kvp = self.oaipmh().request(self.kvp)
+
         if error == 0:
             # test for the basic keyword values (service, version, request)
             for k in ['service', 'version', 'request']:
@@ -542,6 +561,11 @@ class Csw(object):
             self.response = self.opensearch().response_csw2opensearch(
                             self.response, self.config)
 
+        elif self.mode == 'oaipmh':
+            LOGGER.debug('OAI-PMH mode detected; processing response.')
+            self.response = self.oaipmh().response(self.response,
+                            self.oaiargs, self.repository, self.config.get('server', 'url'))
+
         return self._write_response()
 
     def exceptionreport(self, code, locator, text):
@@ -603,7 +627,7 @@ class Csw(object):
         # @updateSequence: get latest update to repository
         try:
             updatesequence = \
-            util.get_time_iso2unix(self.repository.query_latest_insert())
+            util.get_time_iso2unix(self.repository.query_insert())
         except:
             updatesequence = None
 
@@ -1211,6 +1235,14 @@ class Csw(object):
         if 'maxrecords' not in self.kvp:
             self.kvp['maxrecords'] = int(self.config.get('server', 'maxrecords'))
 
+        if any(x in ['bbox', 'q', 'time'] for x in self.kvp):
+            LOGGER.debug('OpenSearch Geo/Time parameters detected.')
+            self.kvp['constraintlanguage'] = 'FILTER'
+            tmp_filter = opensearch.kvp2filterxml(self.kvp, self.context)
+            if tmp_filter is not "":
+                self.kvp['constraint'] = tmp_filter
+                LOGGER.debug('OpenSearch Geo/Time parameters to Filter: %s.' % self.kvp['constraint'])
+
         if self.requesttype == 'GET':
             if 'constraint' in self.kvp:
                 # GET request
@@ -1248,7 +1280,7 @@ class Csw(object):
                         self.kvp['constraint']['type'] = 'filter'
                         self.kvp['constraint']['where'], self.kvp['constraint']['values'] = \
                         fes.parse(doc,
-                        self.repository.queryables['_all'].keys(),
+                        self.repository.queryables['_all'],
                         self.repository.dbtype,
                         self.context.namespaces, self.orm, self.language['text'], self.repository.fts)
                     except Exception, err:
diff --git a/requirements.txt b/requirements.txt
index 28c2aa3..bd2412c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
-lxml==3.2.5
-Shapely==1.3.0
+geolinks==0.0.1
+lxml==3.3.5
+OWSLib==0.8.8
 pyproj==1.9.3
-OWSLib==0.8.7
+Shapely==1.3.1
diff --git a/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml b/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml
index ca08fe7..ce8eeab 100644
--- a/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml
+++ b/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml
@@ -246,6 +246,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml b/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml
index ca08fe7..ce8eeab 100644
--- a/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml
+++ b/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml
@@ -246,6 +246,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_apiso_post_GetCapabilities.xml b/tests/expected/suites_apiso_post_GetCapabilities.xml
index 7c8548d..fa942ce 100644
--- a/tests/expected/suites_apiso_post_GetCapabilities.xml
+++ b/tests/expected/suites_apiso_post_GetCapabilities.xml
@@ -246,6 +246,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_apiso_post_GetRecordById-full-dc.xml b/tests/expected/suites_apiso_post_GetRecordById-full-dc.xml
index fe1b7ff..6a2d5d5 100644
--- a/tests/expected/suites_apiso_post_GetRecordById-full-dc.xml
+++ b/tests/expected/suites_apiso_post_GetRecordById-full-dc.xml
@@ -26,7 +26,7 @@
     <dc:subject>longitude</dc:subject>
     <dc:subject>time</dc:subject>
     <dct:references scheme="None">http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg</dct:references>
-    <dct:references scheme="None">http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</dct:references>
+    <dct:references scheme="WWW:LINK">http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</dct:references>
     <dct:references scheme="None">http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&tz=pont&o=qual:2::p0NS06p1</dct:references>
     <dct:references scheme="None">http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f</dct:references>
     <dct:references scheme="None">http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&.draw=lines</dct:references>
diff --git a/tests/expected/suites_apiso_post_GetRecords-filter-and-nested-spatial-or-dateline.xml b/tests/expected/suites_apiso_post_GetRecords-filter-and-nested-spatial-or-dateline.xml
new file mode 100644
index 0000000..3f2b1f2
--- /dev/null
+++ b/tests/expected/suites_apiso_post_GetRecords-filter-and-nested-spatial-or-dateline.xml
@@ -0,0 +1,1132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- 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.isotc211.org/2005/gmd" elementSet="full">
+    <gmi:MI_Metadata xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gmi="http://www.isotc211.org/2005/gmi" xmlns:gmx="http://www.isotc211.org/2005/gmx" xmlns:gsr="http://www.isotc211.org/2005/gsr" xmlns:gss="http://www.isotc211.org/2005/gss" xmlns:gts="http://www.isotc211.org/2005/gts" xsi:schemaLocation="http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd">
+   <gmd:fileIdentifier>
+      <gco:CharacterString>NS06agg</gco:CharacterString>
+   </gmd:fileIdentifier>
+   <gmd:language>
+      <gmd:LanguageCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode" codeListValue="eng">eng</gmd:LanguageCode>
+   </gmd:language>
+   <gmd:characterSet>
+      <gmd:MD_CharacterSetCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode" codeListValue="UTF8">UTF8</gmd:MD_CharacterSetCode>
+   </gmd:characterSet>
+   <gmd:hierarchyLevel>
+      <gmd:MD_ScopeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="dataset">dataset</gmd:MD_ScopeCode>
+   </gmd:hierarchyLevel>
+   <gmd:hierarchyLevel>
+      <gmd:MD_ScopeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="service">service</gmd:MD_ScopeCode>
+   </gmd:hierarchyLevel>
+   <gmd:contact>
+      <gmd:CI_ResponsibleParty>
+         <gmd:individualName>
+            <gco:CharacterString>Margaret McManus</gco:CharacterString>
+         </gmd:individualName>
+         <gmd:organisationName>
+            <gco:CharacterString>University of Hawaii</gco:CharacterString>
+         </gmd:organisationName>
+         <gmd:contactInfo>
+            <gmd:CI_Contact>
+               <gmd:address>
+                  <gmd:CI_Address>
+                     <gmd:electronicMailAddress>
+                        <gco:CharacterString>mamc at hawaii.edu</gco:CharacterString>
+                     </gmd:electronicMailAddress>
+                  </gmd:CI_Address>
+               </gmd:address>
+               <gmd:onlineResource>
+                  <gmd:CI_OnlineResource>
+                     <gmd:linkage>
+                        <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>
+                     </gmd:linkage>
+                     <gmd:protocol>
+                        <gco:CharacterString>http</gco:CharacterString>
+                     </gmd:protocol>
+                     <gmd:applicationProfile>
+                        <gco:CharacterString>web browser</gco:CharacterString>
+                     </gmd:applicationProfile>
+                     <gmd:name>
+                        <gco:CharacterString/>
+                     </gmd:name>
+                     <gmd:description>
+                        <gco:CharacterString/>
+                     </gmd:description>
+                     <gmd:function>
+                        <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="information">information</gmd:CI_OnLineFunctionCode>
+                     </gmd:function>
+                  </gmd:CI_OnlineResource>
+               </gmd:onlineResource>
+            </gmd:CI_Contact>
+         </gmd:contactInfo>
+         <gmd:role>
+            <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact">pointOfContact</gmd:CI_RoleCode>
+         </gmd:role>
+      </gmd:CI_ResponsibleParty>
+   </gmd:contact>
+   <gmd:dateStamp>
+      <gco:Date>2014-04-16</gco:Date>
+   </gmd:dateStamp>
+   <gmd:metadataStandardName>
+      <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>
+   </gmd:metadataStandardName>
+   <gmd:metadataStandardVersion>
+      <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>
+   </gmd:metadataStandardVersion>
+   <gmd:spatialRepresentationInfo>
+      <gmd:MD_GridSpatialRepresentation>
+         <gmd:numberOfDimensions>
+            <gco:Integer>3</gco:Integer>
+         </gmd:numberOfDimensions>
+         <gmd:axisDimensionProperties>
+            <gmd:MD_Dimension>
+               <gmd:dimensionName>
+                  <gmd:MD_DimensionNameTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode" codeListValue="column">column</gmd:MD_DimensionNameTypeCode>
+               </gmd:dimensionName>
+               <gmd:dimensionSize>
+                  <gco:Integer>1</gco:Integer>
+               </gmd:dimensionSize>
+               <gmd:resolution>
+                  <gco:Measure uom="degrees_east">0.0</gco:Measure>
+               </gmd:resolution>
+            </gmd:MD_Dimension>
+         </gmd:axisDimensionProperties>
+         <gmd:axisDimensionProperties>
+            <gmd:MD_Dimension>
+               <gmd:dimensionName>
+                  <gmd:MD_DimensionNameTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode" codeListValue="row">row</gmd:MD_DimensionNameTypeCode>
+               </gmd:dimensionName>
+               <gmd:dimensionSize>
+                  <gco:Integer>1</gco:Integer>
+               </gmd:dimensionSize>
+               <gmd:resolution>
+                  <gco:Measure uom="degrees_north">0.0</gco:Measure>
+               </gmd:resolution>
+            </gmd:MD_Dimension>
+         </gmd:axisDimensionProperties>
+         <gmd:axisDimensionProperties>
+            <gmd:MD_Dimension>
+               <gmd:dimensionName>
+                  <gmd:MD_DimensionNameTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode" codeListValue="temporal">temporal</gmd:MD_DimensionNameTypeCode>
+               </gmd:dimensionName>
+               <gmd:dimensionSize>
+                  <gco:Integer>482760</gco:Integer>
+               </gmd:dimensionSize>
+               <gmd:resolution>
+                  <gco:Measure uom="seconds">252.0</gco:Measure>
+               </gmd:resolution>
+            </gmd:MD_Dimension>
+         </gmd:axisDimensionProperties>
+         <gmd:cellGeometry>
+            <gmd:MD_CellGeometryCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_CellGeometryCode" codeListValue="area">area</gmd:MD_CellGeometryCode>
+         </gmd:cellGeometry>
+         <gmd:transformationParameterAvailability gco:nilReason="unknown"/>
+      </gmd:MD_GridSpatialRepresentation>
+   </gmd:spatialRepresentationInfo>
+   <gmd:identificationInfo>
+      <gmd:MD_DataIdentification id="DataIdentification">
+         <gmd:citation>
+            <gmd:CI_Citation>
+               <gmd:title>
+                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>
+               </gmd:title>
+               <gmd:date>
+                  <gmd:CI_Date>
+                     <gmd:date>
+                        <gco:Date>2011-04-12</gco:Date>
+                     </gmd:date>
+                     <gmd:dateType>
+                        <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="creation">creation</gmd:CI_DateTypeCode>
+                     </gmd:dateType>
+                  </gmd:CI_Date>
+               </gmd:date>
+               <gmd:date>
+                  <gmd:CI_Date>
+                     <gmd:date>
+                        <gco:Date>2011-04-19</gco:Date>
+                     </gmd:date>
+                     <gmd:dateType>
+                        <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="issued">issued</gmd:CI_DateTypeCode>
+                     </gmd:dateType>
+                  </gmd:CI_Date>
+               </gmd:date>
+               <gmd:date>
+                  <gmd:CI_Date>
+                     <gmd:date>
+                        <gco:Date>2014-03-18</gco:Date>
+                     </gmd:date>
+                     <gmd:dateType>
+                        <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="revision">revision</gmd:CI_DateTypeCode>
+                     </gmd:dateType>
+                  </gmd:CI_Date>
+               </gmd:date>
+               <gmd:identifier>
+                  <gmd:MD_Identifier>
+                     <gmd:authority>
+                        <gmd:CI_Citation>
+                           <gmd:title>
+                              <gco:CharacterString>org.pacioos</gco:CharacterString>
+                           </gmd:title>
+                           <gmd:date gco:nilReason="inapplicable"/>
+                        </gmd:CI_Citation>
+                     </gmd:authority>
+                     <gmd:code>
+                        <gco:CharacterString>NS06agg</gco:CharacterString>
+                     </gmd:code>
+                  </gmd:MD_Identifier>
+               </gmd:identifier>
+               <gmd:citedResponsibleParty>
+                  <gmd:CI_ResponsibleParty>
+                     <gmd:individualName>
+                        <gco:CharacterString>Margaret McManus</gco:CharacterString>
+                     </gmd:individualName>
+                     <gmd:organisationName>
+                        <gco:CharacterString>University of Hawaii</gco:CharacterString>
+                     </gmd:organisationName>
+                     <gmd:contactInfo>
+                        <gmd:CI_Contact>
+                           <gmd:address>
+                              <gmd:CI_Address>
+                                 <gmd:electronicMailAddress>
+                                    <gco:CharacterString>mamc at hawaii.edu</gco:CharacterString>
+                                 </gmd:electronicMailAddress>
+                              </gmd:CI_Address>
+                           </gmd:address>
+                           <gmd:onlineResource>
+                              <gmd:CI_OnlineResource>
+                                 <gmd:linkage>
+                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>
+                                 </gmd:linkage>
+                                 <gmd:protocol>
+                                    <gco:CharacterString>http</gco:CharacterString>
+                                 </gmd:protocol>
+                                 <gmd:applicationProfile>
+                                    <gco:CharacterString>web browser</gco:CharacterString>
+                                 </gmd:applicationProfile>
+                                 <gmd:name>
+                                    <gco:CharacterString/>
+                                 </gmd:name>
+                                 <gmd:description>
+                                    <gco:CharacterString/>
+                                 </gmd:description>
+                                 <gmd:function>
+                                    <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="information">information</gmd:CI_OnLineFunctionCode>
+                                 </gmd:function>
+                              </gmd:CI_OnlineResource>
+                           </gmd:onlineResource>
+                        </gmd:CI_Contact>
+                     </gmd:contactInfo>
+                     <gmd:role>
+                        <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="originator">originator</gmd:CI_RoleCode>
+                     </gmd:role>
+                  </gmd:CI_ResponsibleParty>
+               </gmd:citedResponsibleParty>
+               <gmd:citedResponsibleParty>
+                  <gmd:CI_ResponsibleParty>
+                     <gmd:individualName>
+                        <gco:CharacterString>Jim Potemra</gco:CharacterString>
+                     </gmd:individualName>
+                     <gmd:organisationName gco:nilReason="missing"/>
+                     <gmd:contactInfo gco:nilReason="missing"/>
+                     <gmd:role>
+                        <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="distributor">distributor</gmd:CI_RoleCode>
+                     </gmd:role>
+                  </gmd:CI_ResponsibleParty>
+               </gmd:citedResponsibleParty>
+               <gmd:otherCitationDetails>
+                  <gco:CharacterString>Data produced by Dr. Margaret McManus (mamc at hawaii.edu). Point of contact: Gordon Walker (gwalker at hawaii.edu).</gco:CharacterString>
+               </gmd:otherCitationDetails>
+            </gmd:CI_Citation>
+         </gmd:citation>
+         <gmd:abstract>
+            <gco:CharacterString>The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor.</gco:CharacterString>
+         </gmd:abstract>
+         <gmd:purpose>
+            <gco:CharacterString>PacIOOS provides timely, reliable, and accurate ocean information to support a safe, clean, productive ocean and resilient coastal zone in the U.S. Pacific Islands region.</gco:CharacterString>
+         </gmd:purpose>
+         <gmd:credit>
+            <gco:CharacterString>The Pacific Islands Ocean Observing System (PacIOOS) is funded through the National Oceanic and Atmospheric Administration (NOAA) as a Regional Association within the U.S. Integrated Ocean Observing System (IOOS). PacIOOS is coordinated by the University of Hawaii School of Ocean and Earth Science and Technology (SOEST).</gco:CharacterString>
+         </gmd:credit>
+         <gmd:pointOfContact>
+            <gmd:CI_ResponsibleParty>
+               <gmd:individualName>
+                  <gco:CharacterString>Margaret McManus</gco:CharacterString>
+               </gmd:individualName>
+               <gmd:organisationName>
+                  <gco:CharacterString>University of Hawaii</gco:CharacterString>
+               </gmd:organisationName>
+               <gmd:contactInfo>
+                  <gmd:CI_Contact>
+                     <gmd:address>
+                        <gmd:CI_Address>
+                           <gmd:electronicMailAddress>
+                              <gco:CharacterString>mamc at hawaii.edu</gco:CharacterString>
+                           </gmd:electronicMailAddress>
+                        </gmd:CI_Address>
+                     </gmd:address>
+                     <gmd:onlineResource>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:protocol>
+                              <gco:CharacterString>http</gco:CharacterString>
+                           </gmd:protocol>
+                           <gmd:applicationProfile>
+                              <gco:CharacterString>web browser</gco:CharacterString>
+                           </gmd:applicationProfile>
+                           <gmd:name>
+                              <gco:CharacterString/>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString/>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="information">information</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onlineResource>
+                  </gmd:CI_Contact>
+               </gmd:contactInfo>
+               <gmd:role>
+                  <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact">pointOfContact</gmd:CI_RoleCode>
+               </gmd:role>
+            </gmd:CI_ResponsibleParty>
+         </gmd:pointOfContact>
+         <gmd:graphicOverview>
+           <gmd:MD_BrowseGraphic>
+             <gmd:fileName><gco:CharacterString>http://pacioos.org/metadata/browse/NS06agg.png</gco:CharacterString></gmd:fileName>
+             <gmd:fileDescription>
+               <gco:CharacterString>Sample image.</gco:CharacterString>
+             </gmd:fileDescription>
+           </gmd:MD_BrowseGraphic>
+         </gmd:graphicOverview>
+         <gmd:descriptiveKeywords>
+            <gmd:MD_Keywords>
+               <gmd:keyword>
+                  <gco:CharacterString>Oceans > Ocean Chemistry > Chlorophyll</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString> Oceans > Ocean Optics > Turbidity</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString> Oceans > Ocean Temperature > Water Temperature</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString> Oceans > Salinity/Density > Conductivity</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString> Oceans > Salinity/Density > Salinity</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString> Oceans > Water Quality</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:type>
+                  <gmd:MD_KeywordTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="theme">theme</gmd:MD_KeywordTypeCode>
+               </gmd:type>
+               <gmd:thesaurusName>
+                  <gmd:CI_Citation>
+                     <gmd:title>
+                        <gco:CharacterString>GCMD Science Keywords</gco:CharacterString>
+                     </gmd:title>
+                     <gmd:date gco:nilReason="unknown"/>
+                  </gmd:CI_Citation>
+               </gmd:thesaurusName>
+            </gmd:MD_Keywords>
+         </gmd:descriptiveKeywords>
+         <gmd:descriptiveKeywords>
+            <gmd:MD_Keywords>
+               <gmd:keyword>
+                  <gco:CharacterString>Ocean &gt; Pacific Ocean &gt; Western Pacific Ocean &gt; Micronesia &gt; Federated States of Micronesia</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>Ocean &gt; Pacific Ocean &gt; United States of America &gt; Territories</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>Federated States of Micronesia &gt; Pohnpei &gt; Pohnpei Lagoon</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:type>
+                  <gmd:MD_KeywordTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="place">place</gmd:MD_KeywordTypeCode>
+               </gmd:type>
+               <gmd:thesaurusName>
+                  <gmd:CI_Citation>
+                     <gmd:title>
+                        <gco:CharacterString>GCMD Location Keywords</gco:CharacterString>
+                     </gmd:title>
+                     <gmd:date gco:nilReason="unknown"/>
+                  </gmd:CI_Citation>
+               </gmd:thesaurusName>
+            </gmd:MD_Keywords>
+         </gmd:descriptiveKeywords>
+         <gmd:descriptiveKeywords>
+            <gmd:MD_Keywords>
+               <gmd:keyword>
+                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:type>
+                  <gmd:MD_KeywordTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="project">project</gmd:MD_KeywordTypeCode>
+               </gmd:type>
+               <gmd:thesaurusName>
+                  <gmd:CI_Citation>
+                     <gmd:title>
+                        <gco:CharacterString>GCMD Project Keywords</gco:CharacterString>
+                     </gmd:title>
+                     <gmd:date gco:nilReason="unknown"/>
+                  </gmd:CI_Citation>
+               </gmd:thesaurusName>
+            </gmd:MD_Keywords>
+         </gmd:descriptiveKeywords>
+         <gmd:descriptiveKeywords>
+            <gmd:MD_Keywords>
+               <gmd:keyword>
+                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:type>
+                  <gmd:MD_KeywordTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="dataCenter">dataCenter</gmd:MD_KeywordTypeCode>
+               </gmd:type>
+               <gmd:thesaurusName>
+                  <gmd:CI_Citation>
+                     <gmd:title>
+                        <gco:CharacterString>GCMD Data Center Keywords</gco:CharacterString>
+                     </gmd:title>
+                     <gmd:date gco:nilReason="unknown"/>
+                  </gmd:CI_Citation>
+               </gmd:thesaurusName>
+            </gmd:MD_Keywords>
+         </gmd:descriptiveKeywords>
+         <gmd:descriptiveKeywords>
+            <gmd:MD_Keywords>
+               <gmd:keyword>
+                  <gco:CharacterString>sea_water_temperature</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>sea_water_electrical_conductivity</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>sea_water_turbidity</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>mass_concentration_of_chlorophyll_in_sea_water</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>sea_water_salinity</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>depth</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>latitude</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>longitude</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:keyword>
+                  <gco:CharacterString>time</gco:CharacterString>
+               </gmd:keyword>
+               <gmd:type>
+                  <gmd:MD_KeywordTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="theme">theme</gmd:MD_KeywordTypeCode>
+               </gmd:type>
+               <gmd:thesaurusName>
+                  <gmd:CI_Citation>
+                     <gmd:title>
+                        <gco:CharacterString>CF-1.4</gco:CharacterString>
+                     </gmd:title>
+                     <gmd:date gco:nilReason="unknown"/>
+                  </gmd:CI_Citation>
+               </gmd:thesaurusName>
+            </gmd:MD_Keywords>
+         </gmd:descriptiveKeywords>
+         <gmd:resourceConstraints>
+            <gmd:MD_LegalConstraints>
+               <gmd:useLimitation>
+                  <gco:CharacterString>The data may be used and redistributed for free but is not intended for legal use, since it may contain inaccuracies. Neither the data Contributor, University of Hawaii, PacIOOS, NOAA, State of Hawaii nor the United States Government, nor any of their employees or contractors, makes any warranty, express or implied, including warranties of merchantability and fitness for a particular purpose, or assumes any legal liability for the accuracy, complete [...]
+               </gmd:useLimitation>
+            </gmd:MD_LegalConstraints>
+         </gmd:resourceConstraints>
+         <gmd:aggregationInfo>
+            <gmd:MD_AggregateInformation>
+               <gmd:aggregateDataSetName>
+                  <gmd:CI_Citation>
+                     <gmd:title>
+                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>
+                     </gmd:title>
+                     <gmd:date gco:nilReason="inapplicable"/>
+                  </gmd:CI_Citation>
+               </gmd:aggregateDataSetName>
+               <gmd:associationType>
+                  <gmd:DS_AssociationTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode" codeListValue="largerWorkCitation">largerWorkCitation</gmd:DS_AssociationTypeCode>
+               </gmd:associationType>
+               <gmd:initiativeType>
+                  <gmd:DS_InitiativeTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode" codeListValue="project">project</gmd:DS_InitiativeTypeCode>
+               </gmd:initiativeType>
+            </gmd:MD_AggregateInformation>
+         </gmd:aggregationInfo>
+         <gmd:aggregationInfo>
+            <gmd:MD_AggregateInformation>
+               <gmd:aggregateDataSetIdentifier>
+                  <gmd:MD_Identifier>
+                     <gmd:authority>
+                        <gmd:CI_Citation>
+                           <gmd:title>
+                              <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>
+                           </gmd:title>
+                           <gmd:date gco:nilReason="inapplicable"/>
+                        </gmd:CI_Citation>
+                     </gmd:authority>
+                     <gmd:code>
+                        <gco:CharacterString>Point</gco:CharacterString>
+                     </gmd:code>
+                  </gmd:MD_Identifier>
+               </gmd:aggregateDataSetIdentifier>
+               <gmd:associationType>
+                  <gmd:DS_AssociationTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode" codeListValue="largerWorkCitation">largerWorkCitation</gmd:DS_AssociationTypeCode>
+               </gmd:associationType>
+               <gmd:initiativeType>
+                  <gmd:DS_InitiativeTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode" codeListValue="project">project</gmd:DS_InitiativeTypeCode>
+               </gmd:initiativeType>
+            </gmd:MD_AggregateInformation>
+         </gmd:aggregationInfo>
+         <gmd:language>
+            <gco:CharacterString>eng</gco:CharacterString>
+         </gmd:language>
+         <gmd:topicCategory>
+            <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>
+         </gmd:topicCategory>
+         <gmd:extent>
+            <gmd:EX_Extent id="boundingExtent">
+               <gmd:geographicElement>
+                  <gmd:EX_GeographicBoundingBox id="boundingGeographicBoundingBox">
+                     <gmd:extentTypeCode>
+                        <gco:Boolean>1</gco:Boolean>
+                     </gmd:extentTypeCode>
+                     <gmd:westBoundLongitude>
+                        <gco:Decimal>158.22402954101562</gco:Decimal>
+                     </gmd:westBoundLongitude>
+                     <gmd:eastBoundLongitude>
+                        <gco:Decimal>158.22402954101562</gco:Decimal>
+                     </gmd:eastBoundLongitude>
+                     <gmd:southBoundLatitude>
+                        <gco:Decimal>6.955227375030518</gco:Decimal>
+                     </gmd:southBoundLatitude>
+                     <gmd:northBoundLatitude>
+                        <gco:Decimal>6.955227375030518</gco:Decimal>
+                     </gmd:northBoundLatitude>
+                  </gmd:EX_GeographicBoundingBox>
+               </gmd:geographicElement>
+               <gmd:temporalElement>
+                  <gmd:EX_TemporalExtent id="boundingTemporalExtent">
+                     <gmd:extent>
+                        <gml:TimePeriod gml:id="d249">
+                           <gml:description>seconds</gml:description>
+                           <gml:beginPosition>2010-05-07T00:00:00Z</gml:beginPosition>
+                           <gml:endPosition>2014-03-17T23:56:00Z</gml:endPosition>
+                        </gml:TimePeriod>
+                     </gmd:extent>
+                  </gmd:EX_TemporalExtent>
+               </gmd:temporalElement>
+               <gmd:verticalElement>
+                  <gmd:EX_VerticalExtent>
+                     <gmd:minimumValue>
+                        <gco:Real>-1.0</gco:Real>
+                     </gmd:minimumValue>
+                     <gmd:maximumValue>
+                        <gco:Real>-1.0</gco:Real>
+                     </gmd:maximumValue>
+                     <gmd:verticalCRS gco:nilReason="missing"/>
+                  </gmd:EX_VerticalExtent>
+               </gmd:verticalElement>
+            </gmd:EX_Extent>
+         </gmd:extent>
+      </gmd:MD_DataIdentification>
+   </gmd:identificationInfo>
+   <gmd:identificationInfo>
+      <srv:SV_ServiceIdentification id="OPeNDAP">
+         <gmd:citation>
+            <gmd:CI_Citation>
+               <gmd:title>
+                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>
+               </gmd:title>
+               <gmd:date>
+                  <gmd:CI_Date>
+                     <gmd:date>
+                        <gco:Date>2011-04-12</gco:Date>
+                     </gmd:date>
+                     <gmd:dateType>
+                        <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="creation">creation</gmd:CI_DateTypeCode>
+                     </gmd:dateType>
+                  </gmd:CI_Date>
+               </gmd:date>
+               <gmd:date>
+                  <gmd:CI_Date>
+                     <gmd:date>
+                        <gco:Date>2011-04-19</gco:Date>
+                     </gmd:date>
+                     <gmd:dateType>
+                        <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="issued">issued</gmd:CI_DateTypeCode>
+                     </gmd:dateType>
+                  </gmd:CI_Date>
+               </gmd:date>
+               <gmd:date>
+                  <gmd:CI_Date>
+                     <gmd:date>
+                        <gco:Date>2014-03-18</gco:Date>
+                     </gmd:date>
+                     <gmd:dateType>
+                        <gmd:CI_DateTypeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="revision">revision</gmd:CI_DateTypeCode>
+                     </gmd:dateType>
+                  </gmd:CI_Date>
+               </gmd:date>
+               <gmd:citedResponsibleParty>
+                  <gmd:CI_ResponsibleParty>
+                     <gmd:individualName>
+                        <gco:CharacterString>Margaret McManus</gco:CharacterString>
+                     </gmd:individualName>
+                     <gmd:organisationName>
+                        <gco:CharacterString>University of Hawaii</gco:CharacterString>
+                     </gmd:organisationName>
+                     <gmd:contactInfo>
+                        <gmd:CI_Contact>
+                           <gmd:address>
+                              <gmd:CI_Address>
+                                 <gmd:electronicMailAddress>
+                                    <gco:CharacterString>mamc at hawaii.edu</gco:CharacterString>
+                                 </gmd:electronicMailAddress>
+                              </gmd:CI_Address>
+                           </gmd:address>
+                           <gmd:onlineResource>
+                              <gmd:CI_OnlineResource>
+                                 <gmd:linkage>
+                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>
+                                 </gmd:linkage>
+                                 <gmd:protocol>
+                                    <gco:CharacterString>http</gco:CharacterString>
+                                 </gmd:protocol>
+                                 <gmd:applicationProfile>
+                                    <gco:CharacterString>web browser</gco:CharacterString>
+                                 </gmd:applicationProfile>
+                                 <gmd:name>
+                                    <gco:CharacterString/>
+                                 </gmd:name>
+                                 <gmd:description>
+                                    <gco:CharacterString/>
+                                 </gmd:description>
+                                 <gmd:function>
+                                    <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="information">information</gmd:CI_OnLineFunctionCode>
+                                 </gmd:function>
+                              </gmd:CI_OnlineResource>
+                           </gmd:onlineResource>
+                        </gmd:CI_Contact>
+                     </gmd:contactInfo>
+                     <gmd:role>
+                        <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="originator">originator</gmd:CI_RoleCode>
+                     </gmd:role>
+                  </gmd:CI_ResponsibleParty>
+               </gmd:citedResponsibleParty>
+               <gmd:citedResponsibleParty>
+                  <gmd:CI_ResponsibleParty>
+                     <gmd:individualName>
+                        <gco:CharacterString>Jim Potemra</gco:CharacterString>
+                     </gmd:individualName>
+                     <gmd:organisationName gco:nilReason="missing"/>
+                     <gmd:contactInfo gco:nilReason="missing"/>
+                     <gmd:role>
+                        <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="distributor">distributor</gmd:CI_RoleCode>
+                     </gmd:role>
+                  </gmd:CI_ResponsibleParty>
+               </gmd:citedResponsibleParty>
+            </gmd:CI_Citation>
+         </gmd:citation>
+         <gmd:abstract>
+            <gco:CharacterString>The nearshore sensors are part of the Pacific Islands Ocean Observing System (PacIOOS) and are designed to measure a variety of ocean parameters at fixed point locations. NS06 is located at the dock in Pohnpei lagoon and is mounted to the bottom in about 1 meter of water. The instrument is a Sea-Bird Electronics model 16+ V2 coupled with a WET Labs ECO-FLNTUS combination sensor.</gco:CharacterString>
+         </gmd:abstract>
+         <srv:serviceType>
+            <gco:LocalName>THREDDS OPeNDAP</gco:LocalName>
+         </srv:serviceType>
+         <srv:extent>
+            <gmd:EX_Extent>
+               <gmd:geographicElement>
+                  <gmd:EX_GeographicBoundingBox>
+                     <gmd:extentTypeCode>
+                        <gco:Boolean>1</gco:Boolean>
+                     </gmd:extentTypeCode>
+                     <gmd:westBoundLongitude>
+                        <gco:Decimal>158.22402954101562</gco:Decimal>
+                     </gmd:westBoundLongitude>
+                     <gmd:eastBoundLongitude>
+                        <gco:Decimal>158.22402954101562</gco:Decimal>
+                     </gmd:eastBoundLongitude>
+                     <gmd:southBoundLatitude>
+                        <gco:Decimal>6.955227375030518</gco:Decimal>
+                     </gmd:southBoundLatitude>
+                     <gmd:northBoundLatitude>
+                        <gco:Decimal>6.955227375030518</gco:Decimal>
+                     </gmd:northBoundLatitude>
+                  </gmd:EX_GeographicBoundingBox>
+               </gmd:geographicElement>
+               <gmd:temporalElement>
+                  <gmd:EX_TemporalExtent>
+                     <gmd:extent>
+                        <gml:TimePeriod gml:id="d249e94">
+                           <gml:beginPosition>2010-05-07T00:00:00Z</gml:beginPosition>
+                           <gml:endPosition>2014-03-17T23:56:00Z</gml:endPosition>
+                        </gml:TimePeriod>
+                     </gmd:extent>
+                  </gmd:EX_TemporalExtent>
+               </gmd:temporalElement>
+               <gmd:verticalElement>
+                  <gmd:EX_VerticalExtent>
+                     <gmd:minimumValue>
+                        <gco:Real>-1.0</gco:Real>
+                     </gmd:minimumValue>
+                     <gmd:maximumValue>
+                        <gco:Real>-1.0</gco:Real>
+                     </gmd:maximumValue>
+                     <gmd:verticalCRS gco:nilReason="missing"/>
+                  </gmd:EX_VerticalExtent>
+               </gmd:verticalElement>
+            </gmd:EX_Extent>
+         </srv:extent>
+         <srv:couplingType>
+            <srv:SV_CouplingType codeList="http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType" codeListValue="tight">tight</srv:SV_CouplingType>
+         </srv:couplingType>
+         <srv:containsOperations>
+            <srv:SV_OperationMetadata>
+               <srv:operationName>
+                  <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>
+               </srv:operationName>
+               <srv:DCP gco:nilReason="unknown"/>
+               <srv:connectPoint>
+                  <gmd:CI_OnlineResource>
+                     <gmd:linkage>
+                        <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg</gmd:URL>
+                     </gmd:linkage>
+                     <gmd:name>
+                        <gco:CharacterString>OPeNDAP</gco:CharacterString>
+                     </gmd:name>
+                     <gmd:description>
+                        <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>
+                     </gmd:description>
+                     <gmd:function>
+                        <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                     </gmd:function>
+                  </gmd:CI_OnlineResource>
+               </srv:connectPoint>
+            </srv:SV_OperationMetadata>
+         </srv:containsOperations>
+         <srv:operatesOn xlink:href="#DataIdentification"/>
+      </srv:SV_ServiceIdentification>
+   </gmd:identificationInfo>
+   <gmd:contentInfo>
+      <gmi:MI_CoverageDescription>
+         <gmd:attributeDescription gco:nilReason="unknown"/>
+         <gmd:contentType gco:nilReason="unknown"/>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>temp</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Temperature (sea_water_temperature)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#Celsius"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>cond</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Conductivity (sea_water_electrical_conductivity)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#S%20m-1"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>turb</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Turbidity (sea_water_turbidity)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#ntu"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>flor</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Chlorophyll (mass_concentration_of_chlorophyll_in_sea_water)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#kg%20m-3"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>salt</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Salinity (sea_water_salinity)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#1e-3"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>z</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>depth below mean sea level (depth)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#meters"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>lat</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Latitude (latitude)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#degrees_north"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>lon</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Longitude (longitude)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#degrees_east"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+         <gmd:dimension>
+            <gmd:MD_Band>
+               <gmd:sequenceIdentifier>
+                  <gco:MemberName>
+                     <gco:aName>
+                        <gco:CharacterString>time</gco:CharacterString>
+                     </gco:aName>
+                     <gco:attributeType>
+                        <gco:TypeName>
+                           <gco:aName>
+                              <gco:CharacterString>float</gco:CharacterString>
+                           </gco:aName>
+                        </gco:TypeName>
+                     </gco:attributeType>
+                  </gco:MemberName>
+               </gmd:sequenceIdentifier>
+               <gmd:descriptor>
+                  <gco:CharacterString>Time (time)</gco:CharacterString>
+               </gmd:descriptor>
+               <gmd:units xlink:href="http://example.org/someUnitsDictionary.xml#minutes%20since%202008-01-01%2000%3A00%3A00"/>
+            </gmd:MD_Band>
+         </gmd:dimension>
+      </gmi:MI_CoverageDescription>
+   </gmd:contentInfo>
+   <gmd:distributionInfo>
+      <gmd:MD_Distribution>
+         <gmd:distributor>
+            <gmd:MD_Distributor>
+               <gmd:distributorContact>
+                  <gmd:CI_ResponsibleParty>
+                     <gmd:individualName gco:nilReason="missing"/>
+                     <gmd:organisationName>
+                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>
+                     </gmd:organisationName>
+                     <gmd:contactInfo>
+                        <gmd:CI_Contact>
+                           <gmd:address>
+                              <gmd:CI_Address>
+                                 <gmd:electronicMailAddress>
+                                    <gco:CharacterString>jimp at hawaii.edu</gco:CharacterString>
+                                 </gmd:electronicMailAddress>
+                              </gmd:CI_Address>
+                           </gmd:address>
+                           <gmd:onlineResource>
+                              <gmd:CI_OnlineResource>
+                                 <gmd:linkage>
+                                    <gmd:URL>http://pacioos.org</gmd:URL>
+                                 </gmd:linkage>
+                                 <gmd:protocol>
+                                    <gco:CharacterString>http</gco:CharacterString>
+                                 </gmd:protocol>
+                                 <gmd:applicationProfile>
+                                    <gco:CharacterString>web browser</gco:CharacterString>
+                                 </gmd:applicationProfile>
+                                 <gmd:name>
+                                    <gco:CharacterString>URL for the data publisher</gco:CharacterString>
+                                 </gmd:name>
+                                 <gmd:description>
+                                    <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>
+                                 </gmd:description>
+                                 <gmd:function>
+                                    <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="information">information</gmd:CI_OnLineFunctionCode>
+                                 </gmd:function>
+                              </gmd:CI_OnlineResource>
+                           </gmd:onlineResource>
+                        </gmd:CI_Contact>
+                     </gmd:contactInfo>
+                     <gmd:role>
+                        <gmd:CI_RoleCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="publisher">publisher</gmd:CI_RoleCode>
+                     </gmd:role>
+                  </gmd:CI_ResponsibleParty>
+               </gmd:distributorContact>
+               <gmd:distributorFormat>
+                  <gmd:MD_Format>
+                     <gmd:name>
+                        <gco:CharacterString>OPeNDAP</gco:CharacterString>
+                     </gmd:name>
+                     <gmd:version gco:nilReason="unknown"/>
+                  </gmd:MD_Format>
+               </gmd:distributorFormat>
+               <gmd:distributorTransferOptions>
+                  <gmd:MD_DigitalTransferOptions>
+                     <gmd:onLine>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:name>
+                              <gco:CharacterString>THREDDS Catalog</gco:CharacterString>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString>This URL provides a catalog page for this dataset within THREDDS Data Server (TDS).</gco:CharacterString>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onLine>
+                  </gmd:MD_DigitalTransferOptions>
+               </gmd:distributorTransferOptions>
+               <gmd:distributorTransferOptions>
+                  <gmd:MD_DigitalTransferOptions>
+                     <gmd:onLine>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:name>
+                              <gco:CharacterString>File Information</gco:CharacterString>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString>This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset.</gco:CharacterString>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onLine>
+                  </gmd:MD_DigitalTransferOptions>
+               </gmd:distributorTransferOptions>
+               <gmd:distributorTransferOptions>
+                  <gmd:MD_DigitalTransferOptions>
+                     <gmd:onLine>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&tz=pont&o=qual:2::p0NS06p1</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:name>
+                              <gco:CharacterString>PacIOOS Voyager (Google Maps API)</gco:CharacterString>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onLine>
+                  </gmd:MD_DigitalTransferOptions>
+               </gmd:distributorTransferOptions>
+               <gmd:distributorTransferOptions>
+                  <gmd:MD_DigitalTransferOptions>
+                     <gmd:onLine>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:name>
+                              <gco:CharacterString>DChart</gco:CharacterString>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onLine>
+                  </gmd:MD_DigitalTransferOptions>
+               </gmd:distributorTransferOptions>
+               <gmd:distributorTransferOptions>
+                  <gmd:MD_DigitalTransferOptions>
+                     <gmd:onLine>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&.draw=lines</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:name>
+                              <gco:CharacterString>ERDDAP</gco:CharacterString>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onLine>
+                  </gmd:MD_DigitalTransferOptions>
+               </gmd:distributorTransferOptions>
+               <gmd:distributorTransferOptions>
+                  <gmd:MD_DigitalTransferOptions>
+                     <gmd:onLine>
+                        <gmd:CI_OnlineResource>
+                           <gmd:linkage>
+                              <gmd:URL>http://pacioos.org/focus/waterquality/wq_fsm.php</gmd:URL>
+                           </gmd:linkage>
+                           <gmd:name>
+                              <gco:CharacterString>PacIOOS Water Quality Platforms: FSM</gco:CharacterString>
+                           </gmd:name>
+                           <gmd:description>
+                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>
+                           </gmd:description>
+                           <gmd:function>
+                              <gmd:CI_OnLineFunctionCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode" codeListValue="download">download</gmd:CI_OnLineFunctionCode>
+                           </gmd:function>
+                        </gmd:CI_OnlineResource>
+                     </gmd:onLine>
+                  </gmd:MD_DigitalTransferOptions>
+               </gmd:distributorTransferOptions>
+            </gmd:MD_Distributor>
+         </gmd:distributor>
+      </gmd:MD_Distribution>
+   </gmd:distributionInfo>
+   <gmd:dataQualityInfo>
+      <gmd:DQ_DataQuality>
+         <gmd:scope>
+            <gmd:DQ_Scope>
+               <gmd:level>
+                  <gmd:MD_ScopeCode codeList="http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="dataset">dataset</gmd:MD_ScopeCode>
+               </gmd:level>
+            </gmd:DQ_Scope>
+         </gmd:scope>
+         <gmd:lineage>
+            <gmd:LI_Lineage>
+               <gmd:statement>
+                  <gco:CharacterString>UH/SOEST (M. McManus), PacIOOS asset (05/2010)</gco:CharacterString>
+               </gmd:statement>
+            </gmd:LI_Lineage>
+         </gmd:lineage>
+      </gmd:DQ_DataQuality>
+   </gmd:dataQualityInfo>
+   <gmd:metadataMaintenance>
+      <gmd:MD_MaintenanceInformation>
+         <gmd:maintenanceAndUpdateFrequency gco:nilReason="unknown"/>
+         <gmd:maintenanceNote>
+            <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3</gco:CharacterString>
+         </gmd:maintenanceNote>
+      </gmd:MD_MaintenanceInformation>
+   </gmd:metadataMaintenance>
+</gmi:MI_Metadata>
+  </csw:SearchResults>
+</csw:GetRecordsResponse>
diff --git a/tests/expected/suites_atom_get_opensearch-description.xml b/tests/expected/suites_atom_get_opensearch-description.xml
new file mode 100644
index 0000000..70ceb99
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-description.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+  <ShortName>pycsw Geospatial Catalogue</ShortName>
+  <LongName>pycsw Geospatial Catalogue</LongName>
+  <Description>pycsw is an OGC CSW server implementation written in Python</Description>
+  <Tags>catalogue discovery</Tags>
+  <Url type="application/atom+xml" method="get" template="http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg?mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q={searchTerms?}&bbox={geo:box?}&time={time:start?}/{time:end?}"/>
+  <Image type="image/vnd.microsoft.icon" width="16" height="16">http://pycsw.org/img/favicon.ico</Image>
+  <Developer>Kralidis, Tom</Developer>
+  <Contact>tomkralidis at gmail.com</Contact>
+  <Attribution>pycsw</Attribution>
+</OpenSearchDescription>
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
new file mode 100644
index 0000000..4eac630
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>2</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>2</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <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>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>44.79 -6.17 51.13 -6.17 51.13 -2.23 44.79 -2.23 44.79 -6.17</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:category>Vegetation-Cropland</atom:category>
+    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</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:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63"/>
+    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>
+    <atom:title>Mauris sed neque</atom:title>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>47.59 -4.1 51.22 -4.1 51.22 0.89 47.59 0.89 47.59 -4.1</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+</atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml b/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml
new file mode 100644
index 0000000..e0ba0e7
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>3</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>3</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</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:1ef30a8b-876d-4828-9246-c37ab4510bbd"/>
+    <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>60.04 13.75 68.41 13.75 68.41 17.92 60.04 17.92 60.04 13.75</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:category>Vegetation-Cropland</atom:category>
+    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</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:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63"/>
+    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>
+    <atom:title>Mauris sed neque</atom:title>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>47.59 -4.1 51.22 -4.1 51.22 0.89 47.59 0.89 47.59 -4.1</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <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>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>44.79 -6.17 51.13 -6.17 51.13 -2.23 44.79 -2.23 44.79 -6.17</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+</atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-q-and-bbox.xml b/tests/expected/suites_atom_get_opensearch-ogc-q-and-bbox.xml
new file mode 100644
index 0000000..c2c5180
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-q-and-bbox.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>1</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>1</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:category>Vegetation-Cropland</atom:category>
+    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</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:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63"/>
+    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>
+    <atom:title>Mauris sed neque</atom:title>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>47.59 -4.1 51.22 -4.1 51.22 0.89 47.59 0.89 47.59 -4.1</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+</atom:feed>
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
new file mode 100644
index 0000000..eca89c5
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>1</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>1</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <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:entry>
+</atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch-ogc-q.xml b/tests/expected/suites_atom_get_opensearch-ogc-q.xml
new file mode 100644
index 0000000..83db210
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-q.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>1</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>1</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:category>Tourism--Greece</atom:category>
+    <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</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:19887a8a-f6b0-4a63-ae56-7fba0e17801f"/>
+    <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>
+    <atom:title>Lorem ipsum</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
new file mode 100644
index 0000000..eca89c5
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-time.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>1</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>1</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <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: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
new file mode 100644
index 0000000..eca89c5
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>1</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>1</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <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: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
new file mode 100644
index 0000000..29c2885
--- /dev/null
+++ b/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
+  <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
+  <atom:title>pycsw Geospatial Catalogue</atom:title>
+  <os:totalResults>3</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>3</os:itemsPerPage>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <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>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>44.79 -6.17 51.13 -6.17 51.13 -2.23 44.79 -2.23 44.79 -6.17</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:category>Vegetation-Cropland</atom:category>
+    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</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:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63"/>
+    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>
+    <atom:title>Mauris sed neque</atom:title>
+    <georss:where>
+      <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
+        <gml:exterior>
+          <gml:LinearRing>
+            <gml:posList>47.59 -4.1 51.22 -4.1 51.22 0.89 47.59 0.89 47.59 -4.1</gml:posList>
+          </gml:LinearRing>
+        </gml:exterior>
+      </gml:Polygon>
+    </georss:where>
+  </atom:entry>
+  <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
+    <atom:category>Hydrography--Dictionaries</atom:category>
+    <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</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:784e2afd-a9fd-44a6-9a92-a3848371c8ec"/>
+    <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>
+    <atom:title>Aliquam fermentum purus quis arcu</atom:title>
+  </atom:entry>
+</atom:feed>
diff --git a/tests/expected/suites_atom_get_opensearch.xml b/tests/expected/suites_atom_get_opensearch.xml
index 5552c40..3887160 100644
--- a/tests/expected/suites_atom_get_opensearch.xml
+++ b/tests/expected/suites_atom_get_opensearch.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!-- PYCSW_VERSION -->
-<atom:feed xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
+<atom:feed xmlns:os="http://a9.com/-/spec/opensearch/1.1/" xmlns:time="http://a9.com/-/opensearch/extensions/time/1.0/" xmlns:geo="http://a9.com/-/opensearch/extensions/geo/1.0/" xmlns:atom="http://www.w3.org/2005/Atom">
   <atom:id>http://localhost/pycsw/csw.py?config=tests/suites/atom/default.cfg</atom:id>
   <atom:title>pycsw Geospatial Catalogue</atom:title>
-  <opensearch:totalResults>12</opensearch:totalResults>
-  <opensearch:startIndex>1</opensearch:startIndex>
-  <opensearch:itemsPerPage>10</opensearch:itemsPerPage>
+  <os:totalResults>12</os:totalResults>
+  <os:startIndex>1</os:startIndex>
+  <os:itemsPerPage>10</os:itemsPerPage>
   <atom:entry xmlns:georss="http://www.georss.org/georss" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml">
     <atom:category>Tourism--Greece</atom:category>
     <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>
diff --git a/tests/expected/suites_atom_post_GetCapabilities.xml b/tests/expected/suites_atom_post_GetCapabilities.xml
index 3815701..02cee9f 100644
--- a/tests/expected/suites_atom_post_GetCapabilities.xml
+++ b/tests/expected/suites_atom_post_GetCapabilities.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</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 c2693ca..452b59b 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
@@ -193,6 +193,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</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 af1a3a4..ed0ca0a 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
@@ -219,6 +219,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_default_get_GetCapabilities.xml b/tests/expected/suites_default_get_GetCapabilities.xml
index 868be74..53ecbfa 100644
--- a/tests/expected/suites_default_get_GetCapabilities.xml
+++ b/tests/expected/suites_default_get_GetCapabilities.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_default_post_GetCapabilities-SOAP.xml b/tests/expected/suites_default_post_GetCapabilities-SOAP.xml
index cafaee5..2e35ac2 100644
--- a/tests/expected/suites_default_post_GetCapabilities-SOAP.xml
+++ b/tests/expected/suites_default_post_GetCapabilities-SOAP.xml
@@ -192,6 +192,9 @@
         <ows:Constraint name="XPathQueryables">
           <ows:Value>allowed</ows:Value>
         </ows:Constraint>
+        <ows:Constraint name="MaxRecordDefault">
+          <ows:Value>10</ows:Value>
+        </ows:Constraint>
         <ows:Constraint name="PostEncoding">
           <ows:Value>XML</ows:Value>
           <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml b/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml
index 868be74..53ecbfa 100644
--- a/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml
+++ b/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_default_post_GetCapabilities.xml b/tests/expected/suites_default_post_GetCapabilities.xml
index 868be74..53ecbfa 100644
--- a/tests/expected/suites_default_post_GetCapabilities.xml
+++ b/tests/expected/suites_default_post_GetCapabilities.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_dif_post_GetCapabilities.xml b/tests/expected/suites_dif_post_GetCapabilities.xml
index bd10682..7d53941 100644
--- a/tests/expected/suites_dif_post_GetCapabilities.xml
+++ b/tests/expected/suites_dif_post_GetCapabilities.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_ebrim_post_GetCapabilities.xml b/tests/expected/suites_ebrim_post_GetCapabilities.xml
index b89462b..93a0e31 100644
--- a/tests/expected/suites_ebrim_post_GetCapabilities.xml
+++ b/tests/expected/suites_ebrim_post_GetCapabilities.xml
@@ -194,6 +194,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_fgdc_post_GetCapabilities.xml b/tests/expected/suites_fgdc_post_GetCapabilities.xml
index 5bf0ec2..8da4ef0 100644
--- a/tests/expected/suites_fgdc_post_GetCapabilities.xml
+++ b/tests/expected/suites_fgdc_post_GetCapabilities.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_harvesting_post_GetCapabilities.xml b/tests/expected/suites_harvesting_post_GetCapabilities.xml
index 7ebcc33..57ccc94 100644
--- a/tests/expected/suites_harvesting_post_GetCapabilities.xml
+++ b/tests/expected/suites_harvesting_post_GetCapabilities.xml
@@ -277,6 +277,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_harvesting_post_Harvest-csw-iso.xml b/tests/expected/suites_harvesting_post_Harvest-csw-iso.xml
new file mode 100644
index 0000000..6bba882
--- /dev/null
+++ b/tests/expected/suites_harvesting_post_Harvest-csw-iso.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<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>23</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>My GeoServer CSW</dc:title>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+      <csw:BriefRecord>
+        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+        <dc:title/>
+      </csw:BriefRecord>
+    </csw:InsertResult>
+  </csw:TransactionResponse>
+</csw:HarvestResponse>
diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml
index ec8229f..15b9c30 100644
--- a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml
+++ b/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml
@@ -2,7 +2,23 @@
 <!-- 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="6" numberOfRecordsReturned="5" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="full">
+  <csw:SearchResults nextRecord="6" numberOfRecordsMatched="7" numberOfRecordsReturned="5" recordSchema="http://www.opengis.net/cat/csw/2.0.2" elementSet="full">
+    <csw:Record>
+      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
+      <dc:title>My GeoServer CSW</dc:title>
+      <dc:type>service</dc:type>
+      <dc:subject>CSW</dc:subject>
+      <dc:subject>Catalog Services For The Web</dc:subject>
+      <dc:subject>GEOSERVER</dc:subject>
+      <dc:format>CSW</dc:format>
+      <dct:references scheme="OGC:CSW">http://suite.opengeo.org/geoserver/ows</dct:references>
+      <dct:abstract>This is a description of your Catalog Services For The Web.</dct:abstract>
+      <dc:creator>Boundless</dc:creator>
+      <dc:publisher>Boundless</dc:publisher>
+      <dc:contributor>Boundless</dc:contributor>
+      <dc:source>http://suite.opengeo.org/geoserver/ows</dc:source>
+      <dc:rights>NONE</dc:rights>
+    </csw:Record>
     <csw:Record>
       <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
       <dc:title>pycsw Geospatial Catalogue OGC CITE demo and Reference Implementation</dc:title>
@@ -116,31 +132,5 @@
         <ows:UpperCorner>89.59 179.98</ows:UpperCorner>
       </ows:BoundingBox>
     </csw:Record>
-    <csw:Record>
-      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>
-      <dc:title>Wisconsin Lake Clarity</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: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>
-      <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:BoundingBox>
-    </csw:Record>
   </csw:SearchResults>
 </csw:GetRecordsResponse>
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 1a40334..525c408 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>104</csw:totalDeleted>
+    <csw:totalDeleted>127</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 d3b13a0..2a28414 100644
--- a/tests/expected/suites_manager_post_GetCapabilities.xml
+++ b/tests/expected/suites_manager_post_GetCapabilities.xml
@@ -277,6 +277,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/expected/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml b/tests/expected/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml
new file mode 100644
index 0000000..41851ea
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request identifier="urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f" metadataprefix="csw-recordd" verb="GetRecord">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Invalid outputschema parameter csw-recordd</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_GetRecord_dc.xml b/tests/expected/suites_oaipmh_get_GetRecord_dc.xml
new file mode 100644
index 0000000..ea1dfc7
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_GetRecord_dc.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request identifier="urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f" metadataprefix="csw-record" verb="GetRecord">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:GetRecord>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:title>Lorem ipsum</dc:title>
+    <dct:spatial>GR-22</dct:spatial>
+    <dc:subject>Tourism--Greece</dc:subject>
+    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+  </oai:GetRecord>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_GetRecord_iso.xml b/tests/expected/suites_oaipmh_get_GetRecord_iso.xml
new file mode 100644
index 0000000..813e46e
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_GetRecord_iso.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request identifier="urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f" metadataprefix="iso19139" verb="GetRecord">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:GetRecord>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Image" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Lorem ipsum</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Tourism--Greece</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+  </oai:GetRecord>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_GetRecord_oai_dc.xml b/tests/expected/suites_oaipmh_get_GetRecord_oai_dc.xml
new file mode 100644
index 0000000..7420484
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_GetRecord_oai_dc.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request identifier="urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f" metadataprefix="oai_dc" verb="GetRecord">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:GetRecord>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:title>Lorem ipsum</dc:title>
+    <dct:spatial>GR-22</dct:spatial>
+    <dc:subject>Tourism--Greece</dc:subject>
+    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+  </oai:GetRecord>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_Identify.xml b/tests/expected/suites_oaipmh_get_Identify.xml
new file mode 100644
index 0000000..d6f3e63
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_Identify.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request verb="Identify">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:Identify>
+    <oai:repositoryName>pycsw Geospatial Catalogue</oai:repositoryName>
+    <oai:baseURL>http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:baseURL>
+    <oai:protocolVersion>2.0</oai:protocolVersion>
+    <oai:adminEmail>tomkralidis at gmail.com</oai:adminEmail>
+    <oai:earliestDatestamp>PYCSW_TIMESTAMP</oai:earliestDatestamp>
+    <oai:deletedRecord>no</oai:deletedRecord>
+    <oai:granularity>YYYY-MM-DDThh:mm:ssZ</oai:granularity>
+  </oai:Identify>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xml b/tests/expected/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xml
new file mode 100644
index 0000000..1784dec
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="foo" verb="ListIdentifiers">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Invalid outputSchema parameter value: foo</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_dc.xml b/tests/expected/suites_oaipmh_get_ListIdentifiers_dc.xml
new file mode 100644
index 0000000..b26577e
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListIdentifiers_dc.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="csw-record" verb="ListIdentifiers">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListIdentifiers>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:resumptionToken completeListSize="12" cursor="0">11</oai:resumptionToken>
+  </oai:ListIdentifiers>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_iso.xml b/tests/expected/suites_oaipmh_get_ListIdentifiers_iso.xml
new file mode 100644
index 0000000..cccf0cc
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListIdentifiers_iso.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="iso19139" verb="ListIdentifiers">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListIdentifiers>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:resumptionToken completeListSize="12" cursor="0">11</oai:resumptionToken>
+  </oai:ListIdentifiers>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefix.xml b/tests/expected/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefix.xml
new file mode 100644
index 0000000..7136aa6
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefix.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request verb="ListIdentifiers">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Missing metadataPrefix parameter</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_oai_dc.xml b/tests/expected/suites_oaipmh_get_ListIdentifiers_oai_dc.xml
new file mode 100644
index 0000000..f3dda7c
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListIdentifiers_oai_dc.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="oai_dc" verb="ListIdentifiers">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListIdentifiers>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+    </oai:record>
+    <oai:resumptionToken completeListSize="12" cursor="0">11</oai:resumptionToken>
+  </oai:ListIdentifiers>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListMetadataFormats.xml b/tests/expected/suites_oaipmh_get_ListMetadataFormats.xml
new file mode 100644
index 0000000..99903ec
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListMetadataFormats.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request verb="ListMetadataFormats">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListMetadataFormats>
+    <oai:metadataFormat>
+      <oai:metadataPrefix>oai_dc</oai:metadataPrefix>
+      <oai:schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</oai:schema>
+      <oai:metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</oai:metadataNamespace>
+    </oai:metadataFormat>
+    <oai:metadataFormat>
+      <oai:metadataPrefix>iso19139</oai:metadataPrefix>
+      <oai:schema>http://www.isotc211.org/2005/gmd/gmd.xsd</oai:schema>
+      <oai:metadataNamespace>http://www.isotc211.org/2005/gmd</oai:metadataNamespace>
+    </oai:metadataFormat>
+    <oai:metadataFormat>
+      <oai:metadataPrefix>dif</oai:metadataPrefix>
+      <oai:schema>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd</oai:schema>
+      <oai:metadataNamespace>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</oai:metadataNamespace>
+    </oai:metadataFormat>
+    <oai:metadataFormat>
+      <oai:metadataPrefix>fgdc-std</oai:metadataPrefix>
+      <oai:schema>http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd</oai:schema>
+      <oai:metadataNamespace>http://www.opengis.net/cat/csw/csdgm</oai:metadataNamespace>
+    </oai:metadataFormat>
+    <oai:metadataFormat>
+      <oai:metadataPrefix>csw-record</oai:metadataPrefix>
+      <oai:schema>http://schemas.opengis.net/csw/2.0.2/record.xsd</oai:schema>
+      <oai:metadataNamespace>http://www.opengis.net/cat/csw/2.0.2</oai:metadataNamespace>
+    </oai:metadataFormat>
+  </oai:ListMetadataFormats>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_dc.xml b/tests/expected/suites_oaipmh_get_ListRecords_dc.xml
new file mode 100644
index 0000000..d6b8df7
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListRecords_dc.xml
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="csw-record" verb="ListRecords">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListRecords>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:title>Lorem ipsum</dc:title>
+    <dct:spatial>GR-22</dct:spatial>
+    <dc:subject>Tourism--Greece</dc:subject>
+    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows">
+    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>
+    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>
+    <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
+      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>
+      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>
+    </ows:BoundingBox>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>
+    <dc:title>Maecenas enim</dc:title>
+    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
+    <dc:format>application/xhtml+xml</dc:format>
+    <dc:subject>Marine sediments</dc:subject>
+    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/">
+    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>
+    <dc:title>Ut facilisis justo ut lacus</dc:title>
+    <dc:subject scheme="http://www.digest.org/2.1">Vegetation</dc:subject>
+    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>
+    <dc:title>Aliquam fermentum purus quis arcu</dc:title>
+    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
+    <dc:subject>Hydrography--Dictionaries</dc:subject>
+    <dc:format>application/pdf</dc:format>
+    <dc:date>2006-05-12Z</dc:date>
+    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/">
+    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:format>image/jp2</dc:format>
+    <dc:title>Vestibulum massa purus</dc:title>
+    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
+    <dc:subject scheme="http://www.digest.org/2.1">Physiography-Landforms</dc:subject>
+    <dct:spatial>FI-ES</dct:spatial>
+    <dct:abstract>Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.</dct:abstract>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows">
+    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
+    <dc:title>Mauris sed neque</dc:title>
+    <dc:subject scheme="http://www.digest.org/2.1">Vegetation-Cropland</dc:subject>
+    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>
+    <dc:date>2006-03-26Z</dc:date>
+    <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
+      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>
+      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>
+    </ows:BoundingBox>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <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: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">
+      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>
+      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>
+    </ows:BoundingBox>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <csw:Record xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:title>Lorem ipsum dolor sit amet</dc:title>
+    <dc:format>image/jpeg</dc:format>
+    <dct:spatial>IT-FI</dct:spatial>
+</csw:Record>
+      </oai:metadata>
+    </oai:record>
+    <oai:resumptionToken completeListSize="12" cursor="0">11</oai:resumptionToken>
+  </oai:ListRecords>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml b/tests/expected/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml
new file mode 100644
index 0000000..0243a52
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="csw-recording" verb="ListRecords">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Invalid outputSchema parameter value: csw-recording</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml b/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml
new file mode 100644
index 0000000..4947b29
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml
@@ -0,0 +1,588 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="iso19139" verb="ListRecords">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListRecords>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Image" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Lorem ipsum</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Tourism--Greece</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Service" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Service</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString></gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+              <gmd:extent>
+                <gmd:EX_Extent>
+                  <gmd:geographicElement>
+                    <gmd:EX_GeographicBoundingBox>
+                      <gmd:westBoundLongitude>
+                        <gco:Decimal>13.75</gco:Decimal>
+                      </gmd:westBoundLongitude>
+                      <gmd:eastBoundLongitude>
+                        <gco:Decimal>17.92</gco:Decimal>
+                      </gmd:eastBoundLongitude>
+                      <gmd:southBoundLatitude>
+                        <gco:Decimal>60.04</gco:Decimal>
+                      </gmd:southBoundLatitude>
+                      <gmd:northBoundLatitude>
+                        <gco:Decimal>68.41</gco:Decimal>
+                      </gmd:northBoundLatitude>
+                    </gmd:EX_GeographicBoundingBox>
+                  </gmd:geographicElement>
+                </gmd:EX_Extent>
+              </gmd:extent>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Text" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Text</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Maecenas enim</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Pellentesque tempus magna non sapien fringilla blandit.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Marine sediments</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Service" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Service</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Ut facilisis justo ut lacus</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString></gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Vegetation</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Text" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Text</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Aliquam fermentum purus quis arcu</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Hydrography--Dictionaries</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Image" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Vestibulum massa purus</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString></gco:CharacterString>
+              </gmd:abstract>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString></gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Physiography-Landforms</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Mauris sed neque</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Vegetation-Cropland</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+              <gmd:extent>
+                <gmd:EX_Extent>
+                  <gmd:geographicElement>
+                    <gmd:EX_GeographicBoundingBox>
+                      <gmd:westBoundLongitude>
+                        <gco:Decimal>-4.1</gco:Decimal>
+                      </gmd:westBoundLongitude>
+                      <gmd:eastBoundLongitude>
+                        <gco:Decimal>0.89</gco:Decimal>
+                      </gmd:eastBoundLongitude>
+                      <gmd:southBoundLatitude>
+                        <gco:Decimal>47.59</gco:Decimal>
+                      </gmd:southBoundLatitude>
+                      <gmd:northBoundLatitude>
+                        <gco:Decimal>51.22</gco:Decimal>
+                      </gmd:northBoundLatitude>
+                    </gmd:EX_GeographicBoundingBox>
+                  </gmd:geographicElement>
+                </gmd:EX_Extent>
+              </gmd:extent>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Ñunç elementum</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString></gco:CharacterString>
+              </gmd:abstract>
+              <gmd:descriptiveKeywords>
+                <gmd:MD_Keywords>
+                  <gmd:keyword>
+                    <gco:CharacterString>Hydrography-Oceanographic</gco:CharacterString>
+                  </gmd:keyword>
+                </gmd:MD_Keywords>
+              </gmd:descriptiveKeywords>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+              <gmd:extent>
+                <gmd:EX_Extent>
+                  <gmd:geographicElement>
+                    <gmd:EX_GeographicBoundingBox>
+                      <gmd:westBoundLongitude>
+                        <gco:Decimal>-6.17</gco:Decimal>
+                      </gmd:westBoundLongitude>
+                      <gmd:eastBoundLongitude>
+                        <gco:Decimal>-2.23</gco:Decimal>
+                      </gmd:eastBoundLongitude>
+                      <gmd:southBoundLatitude>
+                        <gco:Decimal>44.79</gco:Decimal>
+                      </gmd:southBoundLatitude>
+                      <gmd:northBoundLatitude>
+                        <gco:Decimal>51.13</gco:Decimal>
+                      </gmd:northBoundLatitude>
+                    </gmd:EX_GeographicBoundingBox>
+                  </gmd:geographicElement>
+                </gmd:EX_Extent>
+              </gmd:extent>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd">
+          <gmd:fileIdentifier>
+            <gco:CharacterString>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</gco:CharacterString>
+          </gmd:fileIdentifier>
+          <gmd:language>
+            <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/Image" codeSpace="ISOTC211/19115">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>
+          </gmd:hierarchyLevel>
+          <gmd:contact/>
+          <gmd:dateStamp>
+            <gco:Date/>
+          </gmd:dateStamp>
+          <gmd:metadataStandardName>
+            <gco:CharacterString>ISO19115</gco:CharacterString>
+          </gmd:metadataStandardName>
+          <gmd:metadataStandardVersion>
+            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>
+          </gmd:metadataStandardVersion>
+          <gmd:identificationInfo>
+            <gmd:MD_DataIdentification id="urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2">
+              <gmd:citation>
+                <gmd:CI_Citation>
+                  <gmd:title>
+                    <gco:CharacterString>Lorem ipsum dolor sit amet</gco:CharacterString>
+                  </gmd:title>
+                </gmd:CI_Citation>
+              </gmd:citation>
+              <gmd:abstract>
+                <gco:CharacterString></gco:CharacterString>
+              </gmd:abstract>
+              <gmd:language>
+                <gco:CharacterString/>
+              </gmd:language>
+            </gmd:MD_DataIdentification>
+          </gmd:identificationInfo>
+        </gmd:MD_Metadata>
+      </oai:metadata>
+    </oai:record>
+    <oai:resumptionToken completeListSize="12" cursor="0">11</oai:resumptionToken>
+  </oai:ListRecords>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml b/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml
new file mode 100644
index 0000000..0d31efd
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request metadataprefix="oai_dc" verb="ListRecords">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListRecords>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:title>Lorem ipsum</dc:title>
+    <dct:spatial>GR-22</dct:spatial>
+    <dc:subject>Tourism--Greece</dc:subject>
+    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows">
+    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>
+    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>
+    <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
+      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>
+      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>
+    </ows:BoundingBox>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>
+    <dc:title>Maecenas enim</dc:title>
+    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
+    <dc:format>application/xhtml+xml</dc:format>
+    <dc:subject>Marine sediments</dc:subject>
+    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/">
+    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>
+    <dc:title>Ut facilisis justo ut lacus</dc:title>
+    <dc:subject scheme="http://www.digest.org/2.1">Vegetation</dc:subject>
+    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>
+    <dc:title>Aliquam fermentum purus quis arcu</dc:title>
+    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>
+    <dc:subject>Hydrography--Dictionaries</dc:subject>
+    <dc:format>application/pdf</dc:format>
+    <dc:date>2006-05-12Z</dc:date>
+    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/">
+    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:format>image/jp2</dc:format>
+    <dc:title>Vestibulum massa purus</dc:title>
+    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
+    <dc:subject scheme="http://www.digest.org/2.1">Physiography-Landforms</dc:subject>
+    <dct:spatial>FI-ES</dct:spatial>
+    <dct:abstract>Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.</dct:abstract>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows">
+    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>
+    <dc:title>Mauris sed neque</dc:title>
+    <dc:subject scheme="http://www.digest.org/2.1">Vegetation-Cropland</dc:subject>
+    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>
+    <dc:date>2006-03-26Z</dc:date>
+    <ows:BoundingBox crs="urn:x-ogc:def:crs:EPSG:6.11:4326">
+      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>
+      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>
+    </ows:BoundingBox>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <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: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">
+      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>
+      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>
+    </ows:BoundingBox>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:record>
+      <oai:header>
+        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>
+        <oai:dateStamp/>
+        <oai:setSpec/>
+      </oai:header>
+      <oai:metadata>
+        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/">
+    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>
+    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>
+    <dc:title>Lorem ipsum dolor sit amet</dc:title>
+    <dc:format>image/jpeg</dc:format>
+    <dct:spatial>IT-FI</dct:spatial>
+</oai_dc:dc>
+      </oai:metadata>
+    </oai:record>
+    <oai:resumptionToken completeListSize="12" cursor="0">11</oai:resumptionToken>
+  </oai:ListRecords>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_ListSets.xml b/tests/expected/suites_oaipmh_get_ListSets.xml
new file mode 100644
index 0000000..3d0f9dd
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_ListSets.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request verb="ListSets">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:ListSets>
+    <oai:set>
+      <oai:setSpec>datasets</oai:setSpec>
+      <oai:setName>Datasets</oai:setName>
+    </oai:set>
+    <oai:set>
+      <oai:setSpec>interactiveResources</oai:setSpec>
+      <oai:setName>Interactive Resources</oai:setName>
+    </oai:set>
+  </oai:ListSets>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_bad_verb.xml b/tests/expected/suites_oaipmh_get_bad_verb.xml
new file mode 100644
index 0000000..a1a2fde
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_bad_verb.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request verb="foo">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Unknown verb 'foo'</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_empty.xml b/tests/expected/suites_oaipmh_get_empty.xml
new file mode 100644
index 0000000..2ce10bb
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_empty.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request>http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Missing 'verb' parameter</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_empty_with_amp.xml b/tests/expected/suites_oaipmh_get_empty_with_amp.xml
new file mode 100644
index 0000000..2ce10bb
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_empty_with_amp.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request>http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Missing 'verb' parameter</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_oaipmh_get_illegal_verb.xml b/tests/expected/suites_oaipmh_get_illegal_verb.xml
new file mode 100644
index 0000000..858be36
--- /dev/null
+++ b/tests/expected/suites_oaipmh_get_illegal_verb.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- PYCSW_VERSION -->
+<oai:OAI-PMH xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
+  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>
+  <oai:request foo="bar" verb="foo">http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh</oai:request>
+  <oai:error code="badArgument">Unknown verb 'foo'</oai:error>
+</oai:OAI-PMH>
diff --git a/tests/expected/suites_utf-8_post_GetCapabilities.xml b/tests/expected/suites_utf-8_post_GetCapabilities.xml
index 50c1746..8a1705e 100644
--- a/tests/expected/suites_utf-8_post_GetCapabilities.xml
+++ b/tests/expected/suites_utf-8_post_GetCapabilities.xml
@@ -190,6 +190,9 @@
     <ows:Constraint name="XPathQueryables">
       <ows:Value>allowed</ows:Value>
     </ows:Constraint>
+    <ows:Constraint name="MaxRecordDefault">
+      <ows:Value>10</ows:Value>
+    </ows:Constraint>
     <ows:Constraint name="PostEncoding">
       <ows:Value>XML</ows:Value>
       <ows:Value>SOAP</ows:Value>
diff --git a/tests/index.html b/tests/index.html
index 93e304e..e966176 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -66,196 +66,198 @@
                     <td>
                         <select class="xml">
                             <option value="none">Select a CSW Request</option>
-                            <option value="tests/suites/fgdc/default.cfg,suites/fgdc/post/GetRecords-filter-bbox.xml">suites/fgdc/post/GetRecords-filter-bbox.xml</option>
-                            <option value="tests/suites/fgdc/default.cfg,suites/fgdc/post/GetCapabilities.xml">suites/fgdc/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/fgdc/default.cfg,suites/fgdc/post/DescribeRecord.xml">suites/fgdc/post/DescribeRecord.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-wms.xml">suites/harvesting/post/Harvest-wms.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-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/GetCapabilities.xml">suites/harvesting/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-sos200.xml">suites/harvesting/post/Harvest-sos200.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/GetDomain-parameter.xml">suites/harvesting/post/GetDomain-parameter.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-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-fgdc.xml">suites/harvesting/post/Harvest-fgdc.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-dc.xml">suites/harvesting/post/Harvest-dc.xml</option>
-                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-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-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-rdf.xml">suites/harvesting/post/Harvest-rdf.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/Harvest-iso.xml">suites/harvesting/post/Harvest-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-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/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/default/default.cfg,suites/default/post/Transaction-delete.xml">suites/default/post/Transaction-delete.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities-SOAP.xml">suites/default/post/GetCapabilities-SOAP.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-and-nested-or2.xml">suites/default/post/GetRecords-filter-and-nested-or2.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-or-nested-and.xml">suites/default/post/GetRecords-filter-or-nested-and.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities-updatesequence.xml">suites/default/post/GetCapabilities-updatesequence.xml</option>
+                            <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-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>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-update-full.xml">suites/default/post/Transaction-update-full.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-update-recordproperty.xml">suites/default/post/Transaction-update-recordproperty.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Harvest-response-handler.xml">suites/default/post/Harvest-response-handler.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-function-bad.xml">suites/default/post/GetRecords-filter-function-bad.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecordById.xml">suites/default/post/GetRecordById.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-and-bbox-freetext.xml">suites/default/post/GetRecords-filter-and-bbox-freetext.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-bbox-reproject.xml">suites/default/post/GetRecords-filter-bbox-reproject.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-distributedsearch.xml">suites/default/post/GetRecords-distributedsearch.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-sortby-bbox.xml">suites/default/post/GetRecords-all-sortby-bbox.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Exception-GetRecords-badsrsname.xml">suites/default/post/Exception-GetRecords-badsrsname.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Exception-GetRecords-elementname.xml">suites/default/post/Exception-GetRecords-elementname.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-between.xml">suites/default/post/GetRecords-filter-between.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-maxrecords.xml">suites/default/post/GetRecords-maxrecords.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities-sections.xml">suites/default/post/GetCapabilities-sections.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-function.xml">suites/default/post/GetRecords-filter-function.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-anytext.xml">suites/default/post/GetRecords-filter-anytext.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-json.xml">suites/default/post/GetRecords-all-json.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Harvest-default.xml">suites/default/post/Harvest-default.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-resulttype-hits.xml">suites/default/post/GetRecords-all-resulttype-hits.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-requestid.xml">suites/default/post/GetRecords-requestid.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-cql-title.xml">suites/default/post/GetRecords-cql-title.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-insert.xml">suites/default/post/Transaction-insert.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/DescribeRecord-json.xml">suites/default/post/DescribeRecord-json.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/Exception-GetRecords-invalid-xml.xml">suites/default/post/Exception-GetRecords-invalid-xml.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecordById-json.xml">suites/default/post/GetRecordById-json.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-or-title-abstract.xml">suites/default/post/GetRecords-filter-or-title-abstract.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-resulttype-validate.xml">suites/default/post/GetRecords-all-resulttype-validate.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetDomain-property.xml">suites/default/post/GetDomain-property.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-anytext-and-not.xml">suites/default/post/GetRecords-filter-anytext-and-not.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-bbox-sortby.xml">suites/default/post/GetRecords-filter-bbox-sortby.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities.xml">suites/default/post/GetCapabilities.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-bbox.xml">suites/default/post/GetRecords-filter-bbox.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-not-bbox.xml">suites/default/post/GetRecords-filter-not-bbox.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-end.xml">suites/default/post/GetRecords-end.xml</option>
+                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-elementname.xml">suites/default/post/GetRecords-elementname.xml</option>
+                            <option value="tests/suites/dif/default.cfg,suites/dif/post/DescribeRecord.xml">suites/dif/post/DescribeRecord.xml</option>
+                            <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/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>
+                            <option value="tests/suites/repofilter/default.cfg,suites/repofilter/post/GetRecords-all.xml">suites/repofilter/post/GetRecords-all.xml</option>
+                            <option value="tests/suites/repofilter/default.cfg,suites/repofilter/post/GetRecordById-masked.xml">suites/repofilter/post/GetRecordById-masked.xml</option>
                             <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-00-delete-all.xml">suites/manager/post/Transaction-iso-00-delete-all.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/GetCapabilities.xml">suites/manager/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-dc-02-update-full.xml">suites/manager/post/Transaction-dc-02-update-full.xml</option>
                             <option value="tests/suites/manager/default.cfg,suites/manager/post/GetDomain-parameter.xml">suites/manager/post/GetDomain-parameter.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-000-delete-all.xml">suites/manager/post/Transaction-000-delete-all.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-fgdc-03-delete-all.xml">suites/manager/post/Transaction-fgdc-03-delete-all.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml">suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-03-update-recprop.xml">suites/manager/post/Transaction-iso-03-update-recprop.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-dc-02-update-full.xml">suites/manager/post/Transaction-dc-02-update-full.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-dc-01-insert.xml">suites/manager/post/Transaction-dc-01-insert.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-xxx-delete-all.xml">suites/manager/post/Transaction-xxx-delete-all.xml</option>
                             <option value="tests/suites/manager/default.cfg,suites/manager/post/Clear-000-delete-all.xml">suites/manager/post/Clear-000-delete-all.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-fgdc-01-insert.xml">suites/manager/post/Transaction-fgdc-01-insert.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-000-delete-all.xml">suites/manager/post/Transaction-000-delete-all.xml</option>
                             <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-01-insert.xml">suites/manager/post/Transaction-iso-01-insert.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-xxx-delete-all.xml">suites/manager/post/Transaction-xxx-delete-all.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-dc-01-insert.xml">suites/manager/post/Transaction-dc-01-insert.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-fgdc-03-delete-all.xml">suites/manager/post/Transaction-fgdc-03-delete-all.xml</option>
                             <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-02-update-full.xml">suites/manager/post/Transaction-iso-02-update-full.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-fgdc-02-update-recprop.xml">suites/manager/post/Transaction-fgdc-02-update-recprop.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-fgdc-01-insert.xml">suites/manager/post/Transaction-fgdc-01-insert.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml">suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml</option>
-                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-03-update-recprop.xml">suites/manager/post/Transaction-iso-03-update-recprop.xml</option>
                             <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-iso-05-delete.xml">suites/manager/post/Transaction-iso-05-delete.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/ebrim/default.cfg,suites/ebrim/post/GetCapabilities.xml">suites/ebrim/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/ebrim/default.cfg,suites/ebrim/post/DescribeRecord.xml">suites/ebrim/post/DescribeRecord.xml</option>
-                            <option value="tests/suites/utf-8/default.cfg,suites/utf-8/post/GetCapabilities.xml">suites/utf-8/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml">suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/GetCapabilities.xml">suites/manager/post/GetCapabilities.xml</option>
+                            <option value="tests/suites/manager/default.cfg,suites/manager/post/Transaction-fgdc-02-update-recprop.xml">suites/manager/post/Transaction-fgdc-02-update-recprop.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-servicetype.xml">suites/apiso/post/GetRecords-filter-servicetype.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-all.xml">suites/apiso/post/GetRecords-all.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/DescribeRecord.xml">suites/apiso/post/DescribeRecord.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml">suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-srv-brief.xml">suites/apiso/post/GetRecordById-srv-brief.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-anytext.xml">suites/apiso/post/GetRecords-filter-anytext.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-brief.xml">suites/apiso/post/GetRecordById-brief.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-full-dc.xml">suites/apiso/post/GetRecordById-full-dc.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-cql-title.xml">suites/apiso/post/GetRecords-cql-title.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-full.xml">suites/apiso/post/GetRecordById-full.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-all-csw-output.xml">suites/apiso/post/GetRecords-all-csw-output.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetDomain-property.xml">suites/apiso/post/GetDomain-property.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetCapabilities.xml">suites/apiso/post/GetCapabilities.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-bbox.xml">suites/apiso/post/GetRecords-filter-bbox.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-bbox-csw-output.xml">suites/apiso/post/GetRecords-filter-bbox-csw-output.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-elementname.xml">suites/apiso/post/GetRecords-elementname.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276401.xml">suites/apiso/data/T_pmoed_DTM_1996_276401.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288395.xml">suites/apiso/data/T_ortho_RAS_1998_288395.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_280395.xml">suites/apiso/data/T_pmoed_DTM_1996_280395.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/3e9a8c05.xml">suites/apiso/data/3e9a8c05.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/pacioos-NS06agg.xml">suites/apiso/data/pacioos-NS06agg.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288401.xml">suites/apiso/data/T_ortho_RAS_1998_288401.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_284404.xml">suites/apiso/data/T_ortho_RAS_1998_284404.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288398.xml">suites/apiso/data/T_ortho_RAS_1998_288398.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276398.xml">suites/apiso/data/T_pmoed_DTM_1996_276398.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276395.xml">suites/apiso/data/T_pmoed_DTM_1996_276395.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288404.xml">suites/apiso/data/T_ortho_RAS_1998_288404.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/test.xml">suites/apiso/data/test.xml</option>
+                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276404.xml">suites/apiso/data/T_pmoed_DTM_1996_276404.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml">suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml">suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml">suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml">suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml">suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml">suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml">suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml">suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml">suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml">suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml">suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml">suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml">suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml">suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml">suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml">suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml">suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml">suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml">suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml">suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml">suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml">suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml">suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml">suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml">suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml">suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml">suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml">suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml">suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml">suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml">suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml">suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml">suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml">suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml">suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml">suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml">suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml">suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml">suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml">suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml">suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml">suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml">suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml">suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml">suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml">suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml">suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml">suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml">suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml">suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml">suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml">suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml">suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml">suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml">suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml">suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml">suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml">suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml">suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml">suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml">suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml">suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml">suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml">suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml">suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml">suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml">suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml">suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml">suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml">suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml">suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml">suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml">suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml">suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml">suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml">suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml">suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml">suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml">suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml">suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml">suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml">suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml">suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml">suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml">suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml">suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml">suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml">suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml">suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml">suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml">suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml">suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml">suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml">suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml</option>
                             <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml">suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml">suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml</option>
-                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml">suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml</option>
-                            <option value="tests/suites/atom/default.cfg,suites/atom/post/GetRecords-filter-bbox.xml">suites/atom/post/GetRecords-filter-bbox.xml</option>
-                            <option value="tests/suites/atom/default.cfg,suites/atom/post/GetCapabilities.xml">suites/atom/post/GetCapabilities.xml</option>
+                            <option value="tests/suites/cite/default.cfg,suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml">suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml</option>
                             <option value="tests/suites/atom/default.cfg,suites/atom/post/DescribeRecord.xml">suites/atom/post/DescribeRecord.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/dif/default.cfg,suites/dif/post/GetCapabilities.xml">suites/dif/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/dif/default.cfg,suites/dif/post/DescribeRecord.xml">suites/dif/post/DescribeRecord.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-bbox.xml">suites/apiso/post/GetRecords-filter-bbox.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetCapabilities.xml">suites/apiso/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-full.xml">suites/apiso/post/GetRecordById-full.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-srv-brief.xml">suites/apiso/post/GetRecordById-srv-brief.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-all-csw-output.xml">suites/apiso/post/GetRecords-all-csw-output.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-full-dc.xml">suites/apiso/post/GetRecordById-full-dc.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-bbox-csw-output.xml">suites/apiso/post/GetRecords-filter-bbox-csw-output.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/DescribeRecord.xml">suites/apiso/post/DescribeRecord.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecordById-brief.xml">suites/apiso/post/GetRecordById-brief.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-cql-title.xml">suites/apiso/post/GetRecords-cql-title.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-servicetype.xml">suites/apiso/post/GetRecords-filter-servicetype.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-filter-anytext.xml">suites/apiso/post/GetRecords-filter-anytext.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetDomain-property.xml">suites/apiso/post/GetDomain-property.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-elementname.xml">suites/apiso/post/GetRecords-elementname.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/post/GetRecords-all.xml">suites/apiso/post/GetRecords-all.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/pacioos-NS06agg.xml">suites/apiso/data/pacioos-NS06agg.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288404.xml">suites/apiso/data/T_ortho_RAS_1998_288404.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276404.xml">suites/apiso/data/T_pmoed_DTM_1996_276404.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/test.xml">suites/apiso/data/test.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276395.xml">suites/apiso/data/T_pmoed_DTM_1996_276395.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288398.xml">suites/apiso/data/T_ortho_RAS_1998_288398.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_284404.xml">suites/apiso/data/T_ortho_RAS_1998_284404.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288395.xml">suites/apiso/data/T_ortho_RAS_1998_288395.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276401.xml">suites/apiso/data/T_pmoed_DTM_1996_276401.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_280395.xml">suites/apiso/data/T_pmoed_DTM_1996_280395.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml">suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/3e9a8c05.xml">suites/apiso/data/3e9a8c05.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_ortho_RAS_1998_288401.xml">suites/apiso/data/T_ortho_RAS_1998_288401.xml</option>
-                            <option value="tests/suites/apiso/default.cfg,suites/apiso/data/T_pmoed_DTM_1996_276398.xml">suites/apiso/data/T_pmoed_DTM_1996_276398.xml</option>
-                            <option value="tests/suites/repofilter/default.cfg,suites/repofilter/post/GetRecordById-masked.xml">suites/repofilter/post/GetRecordById-masked.xml</option>
-                            <option value="tests/suites/repofilter/default.cfg,suites/repofilter/post/GetRecords-all.xml">suites/repofilter/post/GetRecords-all.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-delete.xml">suites/default/post/Transaction-delete.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-function-bad.xml">suites/default/post/GetRecords-filter-function-bad.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-update-full.xml">suites/default/post/Transaction-update-full.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-requestid.xml">suites/default/post/GetRecords-requestid.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-or-nested-and.xml">suites/default/post/GetRecords-filter-or-nested-and.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-function.xml">suites/default/post/GetRecords-filter-function.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-resulttype-hits.xml">suites/default/post/GetRecords-all-resulttype-hits.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-bbox.xml">suites/default/post/GetRecords-filter-bbox.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities.xml">suites/default/post/GetCapabilities.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Exception-GetRecords-invalid-xml.xml">suites/default/post/Exception-GetRecords-invalid-xml.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-bbox-reproject.xml">suites/default/post/GetRecords-filter-bbox-reproject.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-bbox-sortby.xml">suites/default/post/GetRecords-filter-bbox-sortby.xml</option>
-                            <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-or-bbox-freetext.xml">suites/default/post/GetRecords-filter-or-bbox-freetext.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Exception-GetRecords-badsrsname.xml">suites/default/post/Exception-GetRecords-badsrsname.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/GetCapabilities-updatesequence.xml">suites/default/post/GetCapabilities-updatesequence.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-json.xml">suites/default/post/GetRecords-all-json.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-and-nested-or2.xml">suites/default/post/GetRecords-filter-and-nested-or2.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-anytext-and-not.xml">suites/default/post/GetRecords-filter-anytext-and-not.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-maxrecords.xml">suites/default/post/GetRecords-maxrecords.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-insert.xml">suites/default/post/Transaction-insert.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/DescribeRecord-json.xml">suites/default/post/DescribeRecord-json.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Exception-GetRecords-elementname.xml">suites/default/post/Exception-GetRecords-elementname.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities-sections.xml">suites/default/post/GetCapabilities-sections.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetCapabilities-SOAP.xml">suites/default/post/GetCapabilities-SOAP.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/DescribeRecord.xml">suites/default/post/DescribeRecord.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-or-title-abstract.xml">suites/default/post/GetRecords-filter-or-title-abstract.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-distributedsearch.xml">suites/default/post/GetRecords-distributedsearch.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-not-bbox.xml">suites/default/post/GetRecords-filter-not-bbox.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-sortby-bbox.xml">suites/default/post/GetRecords-all-sortby-bbox.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-all-resulttype-validate.xml">suites/default/post/GetRecords-all-resulttype-validate.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-end.xml">suites/default/post/GetRecords-end.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-cql-title.xml">suites/default/post/GetRecords-cql-title.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-between.xml">suites/default/post/GetRecords-filter-between.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecordById-json.xml">suites/default/post/GetRecordById-json.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-and-bbox-freetext.xml">suites/default/post/GetRecords-filter-and-bbox-freetext.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Harvest-response-handler.xml">suites/default/post/Harvest-response-handler.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecordById.xml">suites/default/post/GetRecordById.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-filter-anytext.xml">suites/default/post/GetRecords-filter-anytext.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/Transaction-update-recordproperty.xml">suites/default/post/Transaction-update-recordproperty.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetDomain-property.xml">suites/default/post/GetDomain-property.xml</option>
-                            <option value="tests/suites/default/default.cfg,suites/default/post/GetRecords-elementname.xml">suites/default/post/GetRecords-elementname.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/Harvest-default.xml">suites/default/post/Harvest-default.xml</option>
+                            <option value="tests/suites/atom/default.cfg,suites/atom/post/GetCapabilities.xml">suites/atom/post/GetCapabilities.xml</option>
+                            <option value="tests/suites/atom/default.cfg,suites/atom/post/GetRecords-filter-bbox.xml">suites/atom/post/GetRecords-filter-bbox.xml</option>
+                            <option value="tests/suites/fgdc/default.cfg,suites/fgdc/post/DescribeRecord.xml">suites/fgdc/post/DescribeRecord.xml</option>
+                            <option value="tests/suites/fgdc/default.cfg,suites/fgdc/post/GetCapabilities.xml">suites/fgdc/post/GetCapabilities.xml</option>
+                            <option value="tests/suites/fgdc/default.cfg,suites/fgdc/post/GetRecords-filter-bbox.xml">suites/fgdc/post/GetRecords-filter-bbox.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/GetDomain-parameter.xml">suites/harvesting/post/GetDomain-parameter.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-sos200.xml">suites/harvesting/post/Harvest-sos200.xml</option>
+                            <option value="tests/suites/harvesting/default.cfg,suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml">suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml</option>
+                            <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-rdf.xml">suites/harvesting/post/Harvest-rdf.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/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>
 
                         </select>
                         <input type="button" class="send" value="Send"/>
@@ -278,11 +280,13 @@
         <h3 class="header">HTTP GET</h3>
             <ul>
 
-<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest">Exception-Harvest-missing-resourcetype</a></li>
-<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms">Exception-Harvest-missing-source</a></li>
-<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw">Exception-Harvest-invalid-resourcetype</a></li>
-<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org">Exception-Harvest-waf-no-records-found</a></li>
-<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue">Exception-Harvest-waf-bad-value</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities">GetCapabilities</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilitiese">GetCapabilities-invalid-request</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full">GetRecords-all</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:A">GetRecords-sortby-asc</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:D">GetRecords-sortby-desc</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:titlei:A">GetRecords-sortby-invalid-propertyname</a></li>
+<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:FOO">GetRecords-sortby-invalid-order</a></li>
 <li><a href="../csw.py?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities">27e17158-c57a-4493-92ac-dba8934cf462</a></li>
 <li><a href="../csw.py?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=brief&ID=urn%3Auuid%3A19887a8a-f6b0-4a63-ae56-7fba0e17801f">27f69b66-5f05-4311-a89c-73ca55c2686b</a></li>
 <li><a href="../csw.py?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities&acceptversions=2.0.2&date=2006-10-20">2ab7d1fa-885b-459f-80e4-b6282eab4f8c</a></li>
@@ -305,21 +309,48 @@
 <li><a href="../csw.py?config=tests/suites/cite/default.cfg&request=GetCapabilities">c4ea754f-c158-4d8d-8253-dc8f86021b52</a></li>
 <li><a href="../csw.py?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities">f4692ec5-9547-4a05-88ab-e6154af2640a</a></li>
 <li><a href="../csw.py?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63">f997f25e-c865-4d53-a362-0ed1846337f2</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh">empty</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&">empty_with_amp</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo">bad_verb</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo&foo=bar">illegal_verb</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=Identify">Identify</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListSets">ListSets</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListMetadataFormats">ListMetadataFormats</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-record">GetRecord_dc</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-recordd">GetRecord_bad_metadata_prefix</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=oai_dc">GetRecord_oai_dc</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=iso19139">GetRecord_iso</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers">ListIdentifiers_missing_metadata_prefix</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=csw-record">ListIdentifiers_dc</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=iso19139">ListIdentifiers_iso</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=oai_dc">ListIdentifiers_oai_dc</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=foo">ListIdentifiers_bad_metadata_prefix</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-record">ListRecords_dc</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-recording">ListRecords_dc_bad_metadata_prefix</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=oai_dc">ListRecords_oai_dc</a></li>
+<li><a href="../csw.py?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=iso19139">ListRecords_iso19139</a></li>
 <li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&resulttype=results&elementsetname=brief">opensearch</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities">opensearch-description</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=greece">opensearch-ogc-q</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&bbox=-180,-90,180,90">opensearch-ogc-bbox</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2004">opensearch-ogc-time</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2004/">opensearch-ogc-timestart</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=/2004">opensearch-ogc-timeend</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&q=vitae">opensearch-ogc-q-and-time</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&bbox=-180,-90,180,90">opensearch-ogc-bbox-and-time</a></li>
+<li><a href="../csw.py?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&bbox=-180,-90,180,90">opensearch-ogc-q-and-bbox</a></li>
 <li><a href="../csw.py?config=tests/suites/sru/default.cfg&mode=sru">explain</a></li>
 <li><a href="../csw.py?config=tests/suites/sru/default.cfg&mode=sru&version=1.1&operation=searchRetrieve&query=lor">search</a></li>
 <li><a href="../csw.py?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2">search_maxrecords</a></li>
 <li><a href="../csw.py?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2&startRecord=1">search_startrecord_maxrecords</a></li>
 <li><a href="../csw.py?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=dc:title%20like%20'%lor%'&maximumRecords=5">search_cql</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities">GetCapabilities</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilitiese">GetCapabilities-invalid-request</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full">GetRecords-all</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:A">GetRecords-sortby-asc</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:D">GetRecords-sortby-desc</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:titlei:A">GetRecords-sortby-invalid-propertyname</a></li>
-<li><a href="../csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:FOO">GetRecords-sortby-invalid-order</a></li>
 <li><a href="../csw.py?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities">GetCapabilities</a></li>
 <li><a href="../csw.py?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities&lang=gre">GetCapabilities-lang</a></li>
+<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest">Exception-Harvest-missing-resourcetype</a></li>
+<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms">Exception-Harvest-missing-source</a></li>
+<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw">Exception-Harvest-invalid-resourcetype</a></li>
+<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org">Exception-Harvest-waf-no-records-found</a></li>
+<li><a href="../csw.py?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue">Exception-Harvest-waf-bad-value</a></li>
 
             </ul>
         <hr/>
diff --git a/tests/run_tests.py b/tests/run_tests.py
index a06aae7..799d9e8 100644
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -83,6 +83,8 @@ def normalize(sresult, force_id_mask=False):
     updatesequence = re.search('updateSequence="(\S+)"', sresult)
     timestamp = re.search('timestamp="(.*)"', sresult)
     timestamp2 = re.search('timeStamp="(.*)"', sresult)
+    timestamp3 = re.search('<oai:responseDate>(.*)</oai:responseDate>', sresult)
+    timestamp4 = re.search('<oai:earliestDatestamp>(.*)</oai:earliestDatestamp>', sresult)
     zrhost = re.search('<zr:host>(.*)</zr:host>', sresult)
     zrport = re.search('<zr:port>(.*)</zr:port>', sresult)
 
@@ -97,6 +99,12 @@ def normalize(sresult, force_id_mask=False):
     if timestamp2:
         sresult = sresult.replace(timestamp2.group(0),
                                   'timeStamp="PYCSW_TIMESTAMP"')
+    if timestamp3:
+        sresult = sresult.replace(timestamp3.group(0),
+                                  '<oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>')
+    if timestamp4:
+        sresult = sresult.replace(timestamp4.group(0),
+                                  '<oai:earliestDatestamp>PYCSW_TIMESTAMP</oai:earliestDatestamp>')
     if zrport:
         sresult = sresult.replace(zrport.group(0),
                                   '<zr:port>PYCSW_PORT</zr:port>')
diff --git a/tests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml b/tests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml
new file mode 100644
index 0000000..3074a10
--- /dev/null
+++ b/tests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml
@@ -0,0 +1,45 @@
+<csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
+xmlns:gml="http://www.opengis.net/gml"
+xmlns:ogc="http://www.opengis.net/ogc" service="CSW" version="2.0.2"
+resultType="results" startPosition="1" maxRecords="9999"
+outputFormat="application/xml"
+outputSchema="http://www.isotc211.org/2005/gmd"
+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">
+ <csw:Query typeNames="csw:Record">
+   <csw:ElementSetName>full</csw:ElementSetName>
+   <csw:Constraint version="1.1.0">
+     <ogc:Filter>
+       <ogc:And>
+         <ogc:PropertyIsLike wildCard="*" escapeChar="" singleChar="?">
+           <ogc:PropertyName>csw:AnyText</ogc:PropertyName>
+           <ogc:Literal>*pacioos*</ogc:Literal>
+         </ogc:PropertyIsLike>
+         <ogc:Or>
+           <ogc:BBOX>
+             <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
+             <gml:Envelope>
+               <gml:lowerCorner>5.0721 17.8247</gml:lowerCorner>
+               <gml:upperCorner>31.7842 180</gml:upperCorner>
+             </gml:Envelope>
+           </ogc:BBOX>
+           <ogc:BBOX>
+             <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
+             <gml:Envelope>
+               <gml:lowerCorner>15.0721 -180</gml:lowerCorner>
+               <gml:upperCorner>31.7842 -151.2378</gml:upperCorner>
+             </gml:Envelope>
+           </ogc:BBOX>
+         </ogc:Or>
+       </ogc:And>
+     </ogc:Filter>
+   </csw:Constraint>
+   <ogc:SortBy>
+     <ogc:SortProperty>
+       <ogc:PropertyName>dc:title</ogc:PropertyName>
+       <ogc:SortOrder>ASC</ogc:SortOrder>
+     </ogc:SortProperty>
+   </ogc:SortBy>
+ </csw:Query>
+</csw:GetRecords>
diff --git a/tests/suites/atom/get/requests.txt b/tests/suites/atom/get/requests.txt
index ac0b943..1d0f3e7 100644
--- a/tests/suites/atom/get/requests.txt
+++ b/tests/suites/atom/get/requests.txt
@@ -1 +1,10 @@
 opensearch,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&resulttype=results&elementsetname=brief
+opensearch-description,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities
+opensearch-ogc-q,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=greece
+opensearch-ogc-bbox,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&bbox=-180,-90,180,90"
+opensearch-ogc-time,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2004
+opensearch-ogc-timestart,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2004/
+opensearch-ogc-timeend,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=/2004
+opensearch-ogc-q-and-time,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&q=vitae
+opensearch-ogc-bbox-and-time,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&bbox=-180,-90,180,90"
+opensearch-ogc-q-and-bbox,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&bbox=-180,-90,180,90"
diff --git a/tests/suites/harvesting/post/Harvest-csw-iso.xml b/tests/suites/harvesting/post/Harvest-csw-iso.xml
new file mode 100644
index 0000000..c1baa3c
--- /dev/null
+++ b/tests/suites/harvesting/post/Harvest-csw-iso.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Harvest xmlns="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 htt
+p://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd" service="CSW" version="2.0.2">
+  <Source>http://suite.opengeo.org/geoserver/ows</Source>
+  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>
+  <ResourceFormat>application/xml</ResourceFormat>
+</Harvest>
diff --git a/tests/suites/oaipmh/default.cfg b/tests/suites/oaipmh/default.cfg
new file mode 100644
index 0000000..18a0898
--- /dev/null
+++ b/tests/suites/oaipmh/default.cfg
@@ -0,0 +1,91 @@
+# =================================================================
+#
+# Authors: Tom Kralidis <tomkralidis at gmail.com>
+#
+# Copyright (c) 2011 Tom Kralidis
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+# =================================================================
+
+[server]
+home=.
+url=http://localhost/pycsw/csw.py?config=tests/suites/oaipmh/default.cfg
+mimetype=application/xml; charset=UTF-8
+encoding=UTF-8
+language=en-US
+maxrecords=10
+#loglevel=DEBUG
+#logfile=/tmp/pycsw.log
+#ogc_schemas_base=http://foo
+federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery
+pretty_print=true
+profiles=apiso
+#gzip_compresslevel=8
+#spatial_ranking=true
+
+[manager]
+transactions=false
+allowed_ips=127.0.0.1
+
+[metadata:main]
+identification_title=pycsw Geospatial Catalogue
+identification_abstract=pycsw is an OGC CSW server implementation written in Python
+identification_keywords=catalogue,discovery
+identification_keywords_type=theme
+identification_fees=None
+identification_accessconstraints=None
+provider_name=pycsw
+provider_url=http://pycsw.org/
+contact_name=Kralidis, Tom
+contact_position=Senior Systems Scientist
+contact_address=TBA
+contact_city=Toronto
+contact_stateorprovince=Ontario
+contact_postalcode=M9C 3Z9
+contact_country=Canada
+contact_phone=+01-416-xxx-xxxx
+contact_fax=+01-416-xxx-xxxx
+contact_email=tomkralidis at gmail.com
+contact_url=http://kralidis.ca/
+contact_hours=0800h - 1600h EST
+contact_instructions=During hours of service.  Off on weekends.
+contact_role=pointOfContact
+
+[repository]
+# sqlite
+database=sqlite:///tests/suites/cite/data/records.db
+# postgres
+#database=postgres://username:password@localhost/pycsw
+table=records
+
+[metadata:inspire]
+enabled=false
+languages_supported=eng,gre
+default_language=eng
+date=2011-03-29
+gemet_keywords=Utility and governmental services
+conformity_service=notEvaluated
+contact_name=National Technical University of Athens
+contact_email=tzotsos at gmail.com
+temp_extent=2011-02-01/2011-03-30
+
diff --git a/tests/suites/oaipmh/get/requests.txt b/tests/suites/oaipmh/get/requests.txt
new file mode 100644
index 0000000..e9f859c
--- /dev/null
+++ b/tests/suites/oaipmh/get/requests.txt
@@ -0,0 +1,20 @@
+empty,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh
+empty_with_amp,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&
+bad_verb,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo
+illegal_verb,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo&foo=bar
+Identify,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=Identify
+ListSets,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListSets
+ListMetadataFormats,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListMetadataFormats
+GetRecord_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-record
+GetRecord_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-recordd
+GetRecord_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=oai_dc
+GetRecord_iso,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=iso19139
+ListIdentifiers_missing_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers
+ListIdentifiers_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=csw-record
+ListIdentifiers_iso,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=iso19139
+ListIdentifiers_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=oai_dc
+ListIdentifiers_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=foo
+ListRecords_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-record
+ListRecords_dc_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-recording
+ListRecords_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=oai_dc
+ListRecords_iso19139,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=iso19139

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